У меня проблемы с включением statment.Rails model - 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» - все работает. Левое внешнее соединение выполнено. Почему этот «лишний» статус уничтожает левое внешнее соединение? Im новый в рельсах и 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 "профили" ON "профили". User_id "=" users "." Id "WHERE (profiles.age> = '15') AND (profiles.age <= '75') AND (profiles.gender IN (1,2)) - это запрос, когда все работает. – nowy2781