gpt4 book ai didi

ruby - Rails - 一个模型有两个关联

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:03 25 4
gpt4 key购买 nike

我有一个模型 Member,其中包含有关我网站上注册成员(member)的所有信息。然后我有包含 2 列的模型 Message(实际上是 3 列带有 id):

- member_id
- message_from

Messages表中存储了用户的ID,如何一起聊天-当成员A向成员B发送消息时,所以在member_id 列保存了 A 的 ID,并保存到 message_from 列中 B 的 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}

关于ruby - Rails - 一个模型有两个关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9934308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com