我正在使用Message
content
以及sender
和receiver
的{{1}}模型,所以我把
attr_accessible :sender_id
attr_accessible :receiver_id
attr_accessible :content
belongs_to :user
在我的User
模型中
has_many :messages, foreign_key: 'sender_id', class_name: "Message"
has_many :pushes, foreign_key: 'receiver_id', class_name: "Message"
首先,这是最佳做法吗?
顺便说一句,假设我有一些message
实例,如何在rails way
接收方和发送方实例中进入,而无需编写User.find(message.sender_id)
或`User.find(message.receiver_id)
。 (顺便说一句,我知道我可以使用一些表并使用has_many through
mecanism)
答案 0 :(得分:1)
您的用户模型似乎设置正确。
关于你的第二个问题,你可以这样做:
class Message < ActiveRecord::Base
belongs_to :sender, class_name: 'User'
belongs_to :receiver, class_name: 'User'
end
这样,message.sender
和message.receiver
都会为您提供用户对象。
答案 1 :(得分:1)
你走在正确的轨道上。
我在我当前的应用程序中有这个:
class Message < ActiveRecord::Base
belongs_to :to, class_name: User
belongs_to :from, class_name: User
end
给定一个消息的实例,我只是这样做,例如:
if message.to == current_user
...
我的用户类的相关部分:
class User < ActiveRecord::Base
has_many :messages, foreign_key: :to_id # These are received messages
has_many :sent_messages, foreign_key: :from_id, class_name: Message