嗨,我想了解在某些条件下的关系是如何运作的。我正在尝试使消息属于用户,我的消息模型与 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
?这会在创建操作下的消息控制器中吗?我不确定我将如何设置@user.id = sender_id
and的值current_user.id = receiver_id
(或者我是否需要这样做)。谢谢!