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

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

Ruby on Rails6.0 | 空き部屋を登録・予約・決済できるWebサイトを作成する 46 | メッセージと会話 | モデル作成

[45]予約確認電子メール<< [ホームに戻る] >> [47]メッセージと会話 | コントローラとビュー作成


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


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


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


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


記述更新 db\migrate\20200728232206_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



[45]予約確認電子メール<< [ホームに戻る] >> [47]メッセージと会話 | コントローラとビュー作成