2012-08-15 47 views
0

我有兩種模型,Books和Catalogs。Rails - 在sql查詢

class Book < ActiveRecord::Base 
    has_and_belongs_to_many :catalogs 
end 

class Catalog < ActiveRecord::Base 
    has_and_belongs_to_many :books 
end 

我需要找到屬於列出特定目錄的圖書。 我都試過了,

DEFAULT_CATALOGS = ["A","B"] 
Book.joins(:catalogs).where("catalogname = ?",DEFAULT_CATALOGS) 

,但我得到一個異常 Mysql2 ::錯誤:操作數應包含1列(S):

+0

不應該是catalogname => catalog_name? – 2012-08-15 13:31:20

回答

0

它應該是:

Book.joins(:catalogs).where("catalogs.catalogname IN (?)", DEFAULT_CATALOGS) 

或:

Book.joins(:catalogs).where(:catalogs => {:catalogname => DEFAULT_CATALOGS}) 
+0

謝謝,它現在可以工作(帶有第一個建議),但是我獲得了分配給它們的目錄之一的所有書籍都處於默認目錄組中。我想要實現的是我希望書籍的所有目錄都在默認組中。我怎樣才能做到這一點? – ana 2012-08-16 06:02:23

+0

你可以嘗試改述。我不懂你在說什麼。 – Mischa 2012-08-16 06:03:44