[英]PG::Error: ERROR: column reference “status” is ambiguous in active_admin
使用rails 3.2
與active_admin
並看到PG::Error: ERROR: column reference "status" is ambiguous
在Rents.rb
對active_admin
使用自定義過濾器時, PG::Error: ERROR: column reference "status" is ambiguous
:
filter :travel_car_brand, as: :string
filter :travel_car_model, as: :string
錯誤指向:
: SELECT COUNT(DISTINCT "rents"."id") FROM "rents" LEFT OUTER JOIN "travels" ON "travels"."id" = "rents"."travel_id" LEFT OUTER JOIN "cars" ON "cars"."travel_id" = "travels"."id" WHERE ("cars"."brand" ILIKE '%mazda%') AND ("startDate" > '2014-08-04 10:15:14 +0200' and status = 'paid'):
有趣的是,上述內容的status = 'paid'
因為我不確定為什么將其用作過濾器。
楷模
Rent.rb
belongs_to :travel
Travel.rb
has_one :car
租金表和旅行表都具有status
屬性。
我已經看過盧卡斯的回答,但是如果這是Rails應用程序,則SQL應該由應用程序生成,而不是硬編碼。 因此,直接更改SQL不是解決方案。
相反,我建議您找到添加“付費”過濾器的代碼,然后對其進行修改以聲明相關的模型名稱。
您可能在某個范圍內:
scope :paid, where(status: 'paid')
將其更改為(例如):
scope :paid, where("model.status = 'paid'")
您需要選擇要選擇屬性的表,或者同時使用兩者
例如
SELECT
COUNT(DISTINCT "rents"."id")
FROM "rents"
LEFT OUTER JOIN "travels" ON "travels"."id" = "rents"."travel_id"
LEFT OUTER JOIN "cars" ON "cars"."travel_id" = "travels"."id"
WHERE ("cars"."brand" ILIKE '%mazda%')
AND ("startDate" > '2014-08-04 10:15:14 +0200')
AND rents.status = 'paid'
或者如果您同時需要:
SELECT
COUNT(DISTINCT "rents"."id")
FROM "rents"
LEFT OUTER JOIN "travels" ON "travels"."id" = "rents"."travel_id"
LEFT OUTER JOIN "cars" ON "cars"."travel_id" = "travels"."id"
WHERE ("cars"."brand" ILIKE '%mazda%')
AND ("startDate" > '2014-08-04 10:15:14 +0200')
AND rents.status = 'paid'
AND travels.status = 'paid'
您的“狀態”列不明確。 因為SQL無法理解您想要哪個表的列。 SQL無法理解的Rent.status或Travels.status。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.