メッセージと会話のモデルを作成していきます。
コマンド
rails g model Conversation sender:references receiver:references
コマンド
rails g model Message content:text user:references conversation:references
「db\migrate\20200805003957_create_conversations.rb」ファイルを編集します。
記述更新 db\migrate\20200805003957_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