私は 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