我有两个模型,Conversation和Message,一个与Conversible有关。一个Conversible有一个Conversation,一个Conversation有多个Message。我想设置Conversible,这样我就可以在我的Conversible上调用messages,它会返回Message的Conversation。以下是我目前所拥有的:
module Conversible
extend ActiveSupport::Concern
included do
has_one :conversation, as: :conversible dependent: :destroy
has_many :messages, through: :conversation
end
end
class Message < ActiveRecord::Base
belongs_to :conversation
end
class Conversation < ActiveRecord::Base
belongs_to :conversible, polymorphic: true
has_many :messages, dependent: :destroy
end不幸的是,这不起作用。我可以调用conversible.messages,但它总是返回一个空关系,即使conversible.conversation.messages返回一个带有Message的关系。
我遗漏了什么?
发布于 2014-09-05 03:19:38
看起来你不需要Conversible模块:
class Conversation < ActiveRecord::Base
belongs_to :conversible, polymorphic: true
has_many :messages, dependent: :destroy
end
class Message < ActiveRecord::Base
belongs_to :conversation
end然后,如果您需要Conversation的一些关系,您可以这样写:
class Post < ActiveRecord::Base
has_many :conversations, as: :conversible
end或者,您可以尝试如下所示:
module Conversible
extend ActiveSupport::Concern
included
has_one :conversations, as: :conversible
has_many :messages, through: :conversations
end
end然后:
class Post < ActiveRecord::Base
include Conversible
endhttps://stackoverflow.com/questions/25671024
复制相似问题