我有包括statings的問題。Rails模型 - User.includes(:profile)
我的搜索模式是這樣的:
users = User.includes(:profile)
users = users.active
users = users.where('users.age = ?', value)
users = users.where('profiles.abc = ?',value2)
我的用戶模型:
scope :active, where('users.has_photo = ?', true)
這是怎麼回事。當我還沒有在搜索模式'users = users.active' - 一切正常。左外部連接已完成。爲什麼這個「額外」的聲明破壞左外連接?即時通訊新的在rails和sql soo也許這是非常簡單的。
當我還沒有得到用戶= users.active - 查詢是這樣
SELECT COUNT(DISTINCT "users"."id") FROM "users" LEFT OUTER JOIN "profiles" ON "profiles"."user_id" = "users"."id" WHERE (profiles.age >= '15') AND (profiles.age <= '75') AND (profiles.gender IN(1,2)) - this is query when everything works.
,並與用戶= users.active
SQLite3::SQLException: no such column: profiles.age: SELECT COUNT(*) FROM "users" WHERE (users.has_photo = 't') AND (profiles.age >= '21') AND (profiles.age <= '35') AND (profiles.gender IN(1,2))
has_photo僅僅是我打電話的時候,用戶添加的方法照片:
def set_active(value)
self.has_photo = value
end
這應該起作用。我只是測試了一些非常相似的東西,它按照你的意圖工作。你可以發佈你的'用戶'模型嗎?具體來說,引用'has_photo'的部分? –
如何向我們展示有和沒有的查詢。 –
SELECT COUNT(DISTINCT「users」。「id」)FROM「users」LEFT OUTER JOIN「profiles」ON「profiles」。「user_id」=「users」。「id」WHERE(profiles.age> ='15') AND(profiles.age <='75')AND(profiles.gender IN(1,2)) - 這是一切正常時的查詢。 – nowy2781