[英]Rails and sql: rewriting find_by_sql
我有一個產品和創建者表,還有一個名為CreatorProduct的表,該表將創建者與產品連接在一起。 一個產品可以有許多創作者,而一個創作者可以有許多作品。 我想做的是找到有創造者的產品,有些產品可能沒有創造者。
我已經在下面編寫了代碼,但是如何以更友好的方式編寫它呢? 這對我的in rails控制台有效,但是當我將其放入代碼中時,我得到了#的未定義方法“ includes”
Product.find_by_sql("select * from Products where id in (select product_id from Creator_Products intersect select id from Products)")
謝謝!
我可能只是使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.