Rails has_many:through,如何列出对象所属的所有对象?

时间:2015-11-19 15:41:59

标签: ruby-on-rails

字符has_many :conversations, through: :chats

但是,每个会话属于两个或多个字符:聊天表中的每个conversation_id至少重复两次,每个都有不同的character_id,指向同一个会话的多个字符。 / p>

character.rb

has_many :chats, foreign_key: "character_id", dependent: :destroy
has_many :conversations, through: :chats, source: :conversation

chat.rb

belongs_to :character
belongs_to :conversation

conversation.rb

has_many :messages

是否有一种很好的快速方式来列出对话所属的所有字符?你认为像@conversation.characters这样的东西可以解决问题,但是rails并没有意识到这一点。

1 个答案:

答案 0 :(得分:1)

您还必须在Conversation模型中设置关系。

has_many :chats, dependent: :destroy
has_many :characters, through: :chats

然后您可以轻松拨打@conversation.characters

快速提示

顺便说一下,您的Character模型可以简化,无需定义标准foreign_keysource

has_many :chats, dependent: :destroy
has_many :conversations, through: :chats