2012-03-21 12 views
5

私は次の名前付き範囲を持っている:という名前のスコープ - バインド変数の数が間違っ

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 

誰かができれば、私はそれを感謝私がコードで間違っていることを理解するのに役立ちます。

多くのありがとう

答えて

8

バインドステートメントの各疑問符には1つの変数が必要です。彼らはすべて同じであれば、あなたはそれらを複数回繰り返す必要があります。

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] 
    } 
} 
+1

クイックアンサーに感謝します。引数を繰り返さずに 'または'条件を実行する他の方法はありますか? – Kim

+0

金田は私をパンチに殴った。それはあなたが一度だけ繰り返すことでそれを行う方法です。 – Veraticus

14

あなたが入力を繰り返したくない場合は、名前のバインド変数を使用することができます。

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] 
    } 
} 
関連する問題