2011-07-13 6 views
1

私のクエリは、何が起こっているかわから単純で死んでいないと言う。MongoDBのクエリが "arguementsの間違った数(1 2)は、"

User.rb

def self.find_house_number(house_number) 
    User.where("house_number = ?", house_number) 
end 

ので、それを呼び出す:

User.find_house_number("9998883333") 

私はエラーを取得する:

wrong number of arguments (2 for 1) 

アイデア?

+1

http://mongoid.org/docs/querying/criteria.html#whereにはUser.where(:house_number => house_number)という方法があります –

答えて

3

#whereはSQLのような文字列ではなく条件ハッシュをとります。 MongoDBのは、SQLとは何の関係もありませんので、あなたは、そのSQLの断片が動作すると仮定してはならないこと

User.where(:house_number => house_number) 

注:あなたは、代わりにこれを行う必要があります。

+1

また、これはおそらくスコープとして実装する方が良いでしょうそれは 'スコープ:with_house_number、lambda {| house_number |どこ(:house_number => house_number)} '。 'User.with_house_number( '123')のようなことができます。(:city => 'London')' – theTRON

+0

スコープは多少廃止予定です。クラスメソッドは、第2の構文を導入することなく、同等の強力な構文を得ることができます。 –

+0

Ack。もちろん、なぜ私はそれを提案したのか分かりません。自分自身がスコープに対してクラスメソッドを使用していると考えています。 moar caffinesが必要です。 – theTRON

関連する問題