Не равно условному

Я хочу иметь предложение 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? Спасибо

22
задан user715697 14 May 2011 в 18:14
поделиться

2 ответа

Вот как вы будете использовать 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.

23
ответ дан 29 November 2019 в 03:37
поделиться

http://guides.rubyonrails.org/active_record_querying.html#hash-conditions

Только проверка равенства, диапазона и подмножества возможна в условиях хеширования.

Вам нужно будет либо перейти к прямому SQL, либо инвертировать и отправить запрос, см. Есть ли способ инвертировать запрос ActiveRecord :: Relation?

0
ответ дан 29 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: