0
我的模型:條件對連接的表 - Rails的
class Review < ActiveRecord::Base
belongs_to :business
class Business < ActiveRecord::Base
has_many :reviews
has_and_belongs_to_many :categories
我想在一定類別企業評論:
Review.joins(:business => :categories).where(:business => {:categories => [1,2,3,4]})
結果查詢:
SELECT "reviews".* FROM "reviews" INNER JOIN
"businesses" ON "businesses"."id" = "reviews"."business_id" INNER JOIN
"businesses_categories" ON "businesses_categories"."business_id" = "businesses"."id"
INNER JOIN "categories" ON "categories"."id" = "businesses_categories"."category_id"
WHERE "business"."categories" IN (1, 2, 3, 4)
但是,我收到以下錯誤:
ActiveRecord::StatementInvalid: PG::Error: ERROR: missing FROM-clause entry
for table "business"
LINE 1: ...id" = "businesses_categories"."category_id" WHERE "business"...
它的作品!非常感謝 – AlexBrand
非常歡迎!問題是,在使用散列的AR where子句中,它的關鍵是將表和鍵內的值作爲列。所以:企業=? {:categories => 1}轉換爲「where business.categories = 1」。此外,您使用數組嵌套進行連接 - 您不需要將它用於where,order,group等......它用於連接實際上將內部連接嵌套在彼此上,但一旦完成,所有連接的表可以直接通過查詢的其餘部分查看其名稱。 –