Я хочу иметь предложение where с условием равенства и не равно:
@user = User.where(:user_id => current_user.id, :author_id != current_user.id).nil? ? (render :something) : (render :somethingelse)
Вышеупомянутое не работает:
синтаксическая ошибка, неожиданная ')' , ожидая tASSOC ... d,: user_id! = current_user.id) .nil? ? (визуализировать : index): (re ...
Если я изменю второе условие с ! =
на =>
, оно будет работать, однако.
Как мне получить оба условия в одном классе where? Спасибо
Вот как вы будете использовать Arel для генерации запроса «select * from users where user_id = ? and author_id != ?
»:
users = User.arel_table
User.where(users[:user_id]. eq(current_user.id).and(
users[:author_id].not_eq(current_user.id)))
Использование Arel не так лаконично, как использование условий Hash для простых условий, но намного мощнее!
Вот ссылка на полный список предсказаний (eq
, not_eq
, gt
, lt
и т. Д.), Доступных с Arel.
http://guides.rubyonrails.org/active_record_querying.html#hash-conditions
Только проверка равенства, диапазона и подмножества возможна в условиях хеширования.
Вам нужно будет либо перейти к прямому SQL, либо инвертировать и отправить запрос, см. Есть ли способ инвертировать запрос ActiveRecord :: Relation?