【发布时间】:2017-02-17 13:02:17
【问题描述】:
Rails 5,使用filterrific 过滤关联属性上具有多态关联的模型。
Flag
belongs_to :flaggable, polymorphic: true
belongs_to :reporter, class_name: "User"
Post
belongs_to :user
has_many :flags, as: :flaggable
Comment
belongs_to :user
has_many :flags, as: :flaggable
要使过滤器起作用,它需要在模型上定义一个范围,并且我正在尝试获取属于某个用户的任何标记的帖子或评论。 flag.flaggable.user.id 工作正常,但我似乎无法获得正确的范围。
scope :with_owner_name, lambda { |post_owner|
includes(flaggable: :user).where( :post => {:user => [*post_owner]} )
}
或
scope :with_owner_name, lambda { |post_owner|
includes(flaggable: :user).where( :flaggable => {:user => [*post_owner]} )
}
返回
不能急切地加载多态关联:flaggable
并尝试单独包含每个可标记模型也是如此。有没有办法做到这一点?我在 filterrific 的文档中找不到有关多态范围的任何内容。我是否应该在 Flag 和 Post/Comment 用户之间建立关联?
【问题讨论】:
标签: ruby-on-rails associations polymorphic-associations filterrific