Как мне переписать "Feedback.where ('poster_id = 3 ИГЛАЙДЕР_ВИДА = 3')" в Rails 3.1? - PullRequest
2 голосов
/ 04 октября 2011

Есть ли способ написать это более «дружественным к Rails» способом?

, то есть, если бы я искал какой-либо из этих атрибутов, я бы просто сделал Feedback.where(:poster_id => 3), и это было бы хорошо.

Но как мне достичь OR в дружественном синтаксисе Rails 3 (в отличие от SQL дружественного).

Кроме того, если это better, чтобы использовать мойоригинал над желаемым, почему он лучше?

Спасибо.

Редактировать 1 : Кстати, если я сделаю Feedback.where(:poster_id => 3, :receiver_id => 3), который возвращает результат для AND операция, которая является полной противоположностью того, что я хочу.Так что я чувствую себя так близко, просто не совсем там.

1 Ответ

2 голосов
/ 04 октября 2011

Вы можете сделать это, поместив фрагменты SQL в аргументы where ().Для получения дополнительной информации вы можете посмотреть в руководстве по запросам ActiveRecord.

Feedback.where("poster_id = ? OR receiver_id = ?", 1, 3)

Вы можете сделать это без фрагментов SQL , как описано в этом сообщении SO :

t = Feedback.arel_table
Feedback.where(t[:poster_id].eq(1).or(t[:receiver_id].eq(2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...