0
p = Person.find_by_id(1, :include => :bags, :conditions => ['bag.id in (?), [3,4])
我想知道我怎麼能保證這個查詢只能是有效的,如果這兩個「items.id」「3」 &「4」的存在,而不是' 3'或/和'4'。導軌 - 條件包括多個項目在數組
感謝
p = Person.find_by_id(1, :include => :bags, :conditions => ['bag.id in (?), [3,4])
我想知道我怎麼能保證這個查詢只能是有效的,如果這兩個「items.id」「3」 &「4」的存在,而不是' 3'或/和'4'。導軌 - 條件包括多個項目在數組
感謝
您需要手動構建你2內連接到bags_persons表:
Person.find_by_id(1, :joins => "INNER JOIN bags_persons bp1 ON bp1.person_id=persons.id INNER JOIN bags_persons bp2 ON bp2.person_id=persons.id", :conditions => "bp1.bag_id=3 AND bp2.bag_id=4")
希望這有助於
請解釋一下你越要完成什麼。 – 2010-10-15 05:54:25
In Plain SGL:SELECT * FROM persons p INNER JOIN bags_persons b1 ON b1.person_id = p.id INNER JOIN bags_persons b2 ON b2.person_id = p.id WHERE b1.bag_id = 3 AND b2.bag_id = 4點是您需要加入2次才能同時搜索兩個行李。也許有一種更好的方式來寫在rails中,但是:連接和條件你可以將這個查詢翻譯成查找語法。 – giraff 2010-10-15 07:00:39
順便說一下,:包括主要用於在產生的人對象中預取袋子,因此如果在請求後沒有訪問袋子:連接就足夠了。 – giraff 2010-10-15 07:04:22