字符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并没有意识到这一点。
答案 0 :(得分:1)
您还必须在Conversation
模型中设置关系。
has_many :chats, dependent: :destroy
has_many :characters, through: :chats
然后您可以轻松拨打@conversation.characters
快速提示
顺便说一下,您的Character
模型可以简化,无需定义标准foreign_key
和source
。
has_many :chats, dependent: :destroy
has_many :conversations, through: :chats