2013-07-04 2 views
0

Что такое правильный синтаксис для запроса, где владелец не current_user:Что такое синтаксис для неравенства рубина в котором запрос

.where(owner_id: != current_user.id, recipient_id: current_user.id, owner_type: "User") 

Я попытался это:

where(['current_user.id <> ?', :owner_id ], recipient_id: current_user.id, owner_type: "User") 

И Got:

undefined method `%' for ["current_user.id <> ?", :owner_id]:Array 
+0

Вы пробовали 'где ('owner_id! =?', Current_user.id)'? – Huy

ответ

1

Я разместил решение в комментарии, но вы также можете сделать что-то вроде

.where("owner_id != #{current_user.id} AND recipient_id = #{current_user.id} AND owner_type = \"User\"")

+0

Я думаю, что двойной, где, похоже, работает как: .where ('owner_id! =?', Current_user.id) .where (recipient_id: current_user.id, owner_type: «Пользователь»). Limit (10) любая разница в скорости или что-нибудь? – Jaqx

+0

ваш ответ дал мне PGError: ERROR: столбец «Пользователь» не существует – Jaqx

+0

попробуйте ввести нижний регистр Пользователь ... 'user' – Huy

1

попробуйте использовать отдельный where вызов метода для каждого условия, они будут генерировать SQL AND

Something.where("owner_id <> ?", current_user.id) 
    .where("recipient_id = ?", current_user.id) 
    .where("owner_type = ?", "User") 
Смежные вопросы