Rails – 一个具有两个关联的模型

我有模型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  '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}