Rails3: Поиск пользователей по имени и имени? - PullRequest
1 голос
/ 02 мая 2011

Я хочу написать простой метод поиска в моей модели User, где он проверяет agisnt второе имя и имя и возвращает соответствующих пользователей. У меня есть это на данный момент, но выдает ошибку:

  def self.search(search)
    if search
      where("first_name like ? or second_name like ?", "%#{search}%")
    else
      all
    end
  end

ошибка: wrong number of bind variables (1 for 2) in: first_name like ? or second_name like ?

Как я могу это исправить?

Спасибо

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

У вас есть два ?, что означает, что метод where ожидает два аргумента:

def self.search(search)
  if search
    where("first_name like ? or second_name like ?", "%#{search}%", "%#{search}%")
  else
    all
  end
end

Я не уверен, что вы можете упростить эти like s, чтобы использовать один аргумент вместо двух дубликатов, но вы можете немного его исправить:

def self.search(search)
  if search
    q = "%#{search}%"
    where("first_name like ? or second_name like ?", q, q)
  else
    all
  end
end
2 голосов
/ 02 мая 2011

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

where("first name like :name or second name like :name", :name => "%foo%")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...