2

私は RoR の初心者です。

環境 : Rails 3.09 と ruby​​ 1.9.2p290 を leopard にインストール

Michael Hartl (http://ruby.railstutorial.org/) のチュートリアルに注意深く従っています。第 7 章では、コンソールを使用してこのコードをテストする必要があります。

$ rails console --sandbox
>> User.create!(:nom => "Michael Hartl", :email => "mhartl@example.com",
?>              :password => "foobar", :password_confirmation => "foobar")
>> user = User.find_by_email("mhartl@example.com")
>> user.has_password?("foobar")
=> true 

私の問題は、属性ベースのファインダー find_by_(属性の名前) の使用にあります。私の例では、find_by_email.

実は Rails は find_by_ をメソッドとして受け付けていないようです。上記の例でも、user.has_password?("foobar") 行で rails がエラーを返します: NoMethodError: undefined method. メソッド has_password? 私のモデルでは明確に定義されています。

Rails 3.0.9 の API のドキュメントを確認しました。この方法を使用する場合:

>> user = User.where(:email => "mhartl@example.com")

それは動作します....

では、なぜメソッド find_by_ を使用できないのか疑問に思っています。他の検索方法は、例として機能します:find.first、find.lastなど..
私を助けてくれてありがとうfabien

4

1 に答える 1

0

実際には、ファインダーはモデル ファイル内では機能しますが、コンソール (開発環境) 内では機能しません。奇妙なファビアン

于 2011-08-30T16:24:22.217 に答える