我认为设置message 模型的正确方法是这样的:
belongs_to :sender, :foreign_key => :sender_id, class_name: 'User'
belongs_to :recipient, :foreign_key => :recipient_id, class_name: 'User'
你的迁移会是这样的
create_table :messages do |t|
t.integer :sender_id
t.integer :recipient_id
t.timestamps
end
那么,在user 模型中:
has_many :messages, :foreign_key => :sender_id
然后,在message form 中,您可以像这样设置sender:
<%= f.hidden_field :sender_id, value: current_user.id %>
<%= f.hidden_field :recipient_id, value: @user.id %>
您也可以像在您的示例中这样的问题中设置参数:
Message.create(sender_id: 1, recipient_id: 3)
这应该让您执行以下操作:
@message.sender.username
@message.recipient.username