簡體   English   中英

Rails和SQL:重寫find_by_sql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM