我在使用 include 语句时遇到了麻烦。
我的搜索模型如下所示:
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 的新手,也许这很简单。
当我还没有用户 = 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