学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails6.0 | 仕事売買サイトの構築 | 45 | メッセージと会話 | モデル

[44]trestle | 仕事管理 << [ホームに戻る] >> [46]メッセージと会話 | コントローラとビュー


メッセージと会話のモデルを作成していきます。


コマンド
rails g model Conversation sender:references receiver:references


コマンド
rails g model Message content:text user:references conversation:references


「db\migrate\20200529065859_create_conversations.rb」ファイルを編集します。


記述更新 db\migrate\20200529065859_create_conversations.rb
コードをコピーしてファイルの内容を置き換えて下さい。

class CreateConversations < ActiveRecord::Migration[6.0]
  def change
    create_table :conversations do |t|
      t.references :sender, foreign_key: { to_table: :users }
      t.references :receiver, foreign_key: { to_table: :users }

      t.timestamps
    end
  end
end



コマンド マイグレーション適用
rails db:migrate


「app\models\conversation.rb」ファイルを以下の記述に変更します。


記述変更 app\models\conversation.rb

class Conversation < ApplicationRecord
  belongs_to :sender, class_name: "User"
  belongs_to :receiver, class_name: "User"

  def last_message
    message = Message.where(conversation_id: self.id).last
    if message.present?
      return message
    else
      return Message.new updated_at: Time.now
    end
  end
end



「app\models\message.rb」ファイルを以下の記述に変更します。


記述追加 app\models\message.rb
5行目に「validates :content, presence: { message: '空白にはできません' }」の記述を追加しています。

class Message < ApplicationRecord
  belongs_to :user
  belongs_to :conversation

  validates :content, presence: { message: '空白にはできません' }
end



↓↓クリックして頂けると励みになります。


[44]trestle | 仕事管理 << [ホームに戻る] >> [46]メッセージと会話 | コントローラとビュー

関連記事(外部サイト)