模型
class Image
belongs_to :item, polymorphic: true
end
class Book
has_many covers, class_name: "Image", as: :item
enum status: {tech: 0, novel: 1}
end
现在我想查询 所属书籍的 status 为 tech 的所有图片,应该怎么写呢?
(因为还需要对结果进行分页处理,所以 select 不是很方便)
最先想的是
Image.includes(:item).where(items: {status: 0})
然而这样并不行。。。应该是多态的原因。
在论坛上找到了一个解决方案:
class Image
belongs_to :item, polymorphic: true
belongs_to :book, foreign_key: item_id, foreigen_type: book
end
Image.includes(:book).where(books: {status: 0})
这样是可行的,我的理解是这个方法免去了多态的一环,让 Image 直接和 Book 关联起来,从而可以直接使用常规方法查询。
不过还想问一下有没有其他更好的办法