我有一个模型Member
,它包含了我网站上注册成员的所有信息。然后我有了模型Message
,它包含2列(实际上有3列id
):
- member_id
- message_from
在表Messages
中存储了用户的ID,以及如何一起聊天-当成员A向成员B发送消息时,因此在列member_id
中存储了人员A的ID,并将其保存到人员B列message_from
ID中。
我当前的关联看起来像:
class Member < ActiveRecord::Base
has_many :messages_from
end
class Message < ActiveRecord::Base
belongs_to :member
end
我不知道,当我尝试时,我如何从中获取存储在message_from列中的人名
- @member.messages_from.each do |mess_from|
={mess_from.name}
所以我得到了错误undefined method "name" for
。。。如何通过存储在列message_from
中的ID获取用户的名称?
编辑-更新关系:
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
给我:
- @member.messages.each do |message|
= message.message_from.inspect # => "110"
= message.message_from.inspect # => undefined method `name' for "110":String (I wanna get the name of person with ID 110)
我会这样做:
# 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}