2017-06-12 48 views
1

我確信這很簡單,但我無法讓它工作。我有以下關聯。理論上,我想查詢所有具有名稱等於「x」的A記錄的D記錄。所以像這樣:加入偉大的祖父母模型 - Ruby On Rails

@products = Product.joins(category_model: {category_brand: :category}).where("category.name like ?", "%Incline Motors%") 

但我無法得到這個工作。任何幫助,將不勝感激。

電流誤差:

G::UndefinedTable: ERROR: missing FROM-clause entry for table "category" LINE 1: ...es"."id" = "category_brands"."category_id" WHERE (category.n...^: SELECT COUNT(*) FROM "products" INNER JOIN "category_models" ON "category_models"."id" = "products"."category_model_id" INNER JOIN "category_brands" ON "category_brands"."id" = "category_models"."category_brand_id" INNER JOIN "categories" ON "categories"."id" = "category_brands"."category_id" WHERE (category.name like '%Incline Motors%') 
+0

你得到什麼樣的結果? –

+0

@MichaelGorman我已經更新了我的代碼中的錯誤和實際模型名稱的問題。我也嘗試了大括號。 –

+0

錯誤消息是說表'category'從未加入到請求中。事實並非如此,因爲表格實際上是「類別」。大衛奧爾德里奇的答案應該能解決你的問題 –

回答

2

表名應pluralised - 注意SQL語句文本INNER JOIN "categories"

@products = Product.joins(category_model: {category_brand: :category}).where("categories.name like ?", "%Incline Motors%")