именованная область действия - неверное число переменных связывания - PullRequest
7 голосов
/ 21 марта 2012

У меня есть следующая именованная область:

named_scope :report_search, lambda { |search|
  {
    :conditions => ["rep_name like ? or rep_id like ? or rep_symbol like ? or rep_issue like ?", search]
  }
}

Когда я запускаю его, я получаю сообщение об ошибке:

wrong number of bind variables

Буду признателен, если кто-нибудь поможет мне понять, что не так с кодом.

Большое спасибо

Ответы [ 2 ]

17 голосов
/ 21 марта 2012

Вы можете использовать именованные переменные связывания, если не хотите повторять ввод.

named_scope :report_search, lambda { |search|
  {
    :conditions => ["  rep_name   LIKE :search OR 
                       rep_id     LIKE :search OR 
                       rep_symbol LIKE :search OR 
                       rep_issue  LIKE :search", :search => search]
  }
}
11 голосов
/ 21 марта 2012

Вам нужна одна переменная для каждого вопросительного знака в вашем заявлении о привязке. Если они все одинаковые, вам нужно повторить их несколько раз:

named_scope :report_search, lambda { |search|
  {
    :conditions => ["rep_name like ? or rep_id like ? or rep_symbol like ? or rep_issue like ?", search, search, search, search]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...