こんにちは、特定の条件との関係がどのように機能するかを理解しようとしています。メッセージ モデルを 2 人のユーザー (受信者と送信者) にリンクして、メッセージをユーザーに属させようとしています。同時に、ユーザーには 2 つの異なるメッセージ (送信済み + 受信済み) があります。
私の調査によると、これが進むべき道のようです:
ユーザーモデル
class Users < ActiveRecord::Base
attr_accessible :age, :gender, :name
has_many :sent_messages, :class => "Messages", :foreign_key => 'sender_id'
has_many :received_messages, :class => "Messages", :foreign_key => 'receiver_id'
end
メッセージ モデル
class Messages < ActiveRecord::Base
attr_accessible :content, :read
belongs_to :sender, :class => "User", :foreign_key => 'sender_id'
belongs_to :receiver, :class => "User", :foreign_key => 'receiver_id'
end
ただし、フォームでどのタイプのユーザー (送信者または受信者) とどのタイプのメッセージ (受信または送信) を指定するかを概念化する時間があります。
<%= form_for(@user, @message) do |f| %>
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %>
(認証があるとしましょう)このフォーム@user
にこのメッセージを彼/彼女@user.received_messages
に追加する必要があることをどこで/どのように指定しますが、current_user
(ログインしている人は誰でも)このメッセージをに追加しcurrent_user.sent_messages
ますか?これは create アクションの下のメッセージ コントローラにありますか? @user.id = sender_id
andの値をどのように設定するcurrent_user.id = receiver_id
か (または、それを行う必要があるかどうか) がわかりません。ありがとう!