我的模型Member
包含有关我网站上注册会员的所有信息。然后我的模型Message
包含2列(实际上是3 id
}:
- member_id
- message_from
在表Messages
中存储了用户的ID,如何在一起聊天 - 当成员 A 向成员发送消息 B 时,在列{ {1}}已将人员ID A 保存到 B 的人员列member_id
ID中。
我目前的协会如下:
message_from
我不知道,当我尝试
时,如何才能获得 message_from 栏中存储的人的姓名?class Member < ActiveRecord::Base
has_many :messages_from
end
class Message < ActiveRecord::Base
belongs_to :member
end
因此我收到错误- @member.messages_from.each do |mess_from|
={mess_from.name}
...如何通过undefined method "name" for
列中存储的ID获取用户名?
编辑 - 更新关系:
message_from
给了我:
class Member < ActiveRecord::Base
has_many :messages
end
class Message < ActiveRecord::Base
belongs_to :member, :foreign_key => 'user_id', :class_name => 'Member'
has_one :member, :foreign_key => 'message_from', :class_name => 'Member'
end
答案 0 :(得分:4)
我会做这样的事情:
# Untested code, please check yourself!
class Member < ActiveRecord::Base
has_many :outgoing_messages, :class_name => "Message",
:foreign_key => :message_from_id
has_many :incoming_messages, :class_name => "Message",
:foreign_key => :message_to_id
end
class Message < ActiveRecord::Base
belongs_to :sender, :class_name => "Member",
:foreign_key => :message_from_id
belongs_to :receiver, :class_name => "Member",
:foreign_key => :message_to_id
end
更多关于此处关联的信息: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
编辑:在您的观点中:
- @member.outgoing_messages.each do |message|
={message.receiver.name}
={message.sender.name}