我有一个Product和Creator表,我还有一个名为CreatorProduct的表,它将创建者与产品连接起来。产品可以有许多创作者,创作者可以拥有许多产品。我想要做的是找到有创作者的产品,有些产品可能没有创作者。
我已经编写了下面的代码但是如何以更友好的方式编写它?这适用于我的rails控制台,但当我把它放在我的代码中时,我得到了 未定义的方法`包括'#
Product.find_by_sql("select * from Products where id in (select product_id from Creator_Products intersect select id from Products)")
谢谢!
答案 0 :(得分:0)
我可能只是使用find函数并使用类似于现在的地方:
Product.find(:all, :conditions => ["exists (select * from Creators where product_id = Products.Id)"])
否则,我想通过包含创建者信息(假设您已经设置了has_many),主动记录加入数据的方式可能会相同,然后确保创建者信息存在...
Product.find(params[:id],:include => [:Creator],:conditions => ["Creator.product_id!=null"])
如果您尚未设置关系,则需要在模型中定义:
class Product< ActiveRecord::Base
has_many :CreatorProduct
has_many :Creators, :through => :CreatorProduct