Rails помогает найти метод - PullRequest
1 голос
/ 24 апреля 2011

Я пытаюсь создать метод поиска.Это должно найти все konkurrencer, которые имеют tid "1 мин" или "2 мин" и форма "Nyhedsbrev".

Я пробовал что-то вроде этого:

Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")

Это нене работаетОн находит только все konkurrencer, где форма Nyhedsbrev.

Ответы [ 3 ]

2 голосов
/ 24 апреля 2011

Возможно, это работает как задумано.

Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev')

Кроме этого, синтаксис 'ИЛИ', который вы пытаетесь использовать, записывается в SQL следующим образом:

SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR'

Обратите внимание, что для условия 'ИЛИ' вам все равно нужно снова указать имя столбца.

1 голос
/ 24 апреля 2011

Ваш SQL немного неправильный, я думаю, вы хотите это:

Konkurrancer.where(
    "(tid = ? or tid = ?) and form = ?",
    "2 min",
    "1 min",
    "Nyhedsbrev"
)

Обратите внимание на второе упоминание имени столбца tid и скобок.

1 голос
/ 24 апреля 2011

Попробуйте это:

Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev")

Вы также можете использовать:

Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...