Ruby on rails 3 具有活动记录RoR、Model.find_by_的基于动态属性的查找器不工作

Ruby on rails 3 具有活动记录RoR、Model.find_by_的基于动态属性的查找器不工作,ruby-on-rails-3,activerecord,dynamic-finders,Ruby On Rails 3,Activerecord,Dynamic Finders,我是RoR的新手 环境:安装在leopard上的Rails 3.09和ruby 1.9.2p290 我正在认真学习迈克尔·哈特尔的教程(http://ruby.railstutorial.org/). 在第7章中,我们应该使用控制台测试以下代码: $ rails console --sandbox >> User.create!(:nom => "Michael Hartl", :email => "mhartl@example.com", ?>

我是RoR的新手

环境:安装在leopard上的Rails 3.09和ruby 1.9.2p290

我正在认真学习迈克尔·哈特尔的教程(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_(属性名称)。在我的示例中,通过电子邮件查找

实际上,rails似乎不接受find_by_作为一种方法。仍然使用上面的示例,在user.has_password?(“foobar”)行,rails返回错误: NoMethodError:未定义的方法。该方法具有\u密码?在我的模型中定义得很好

我已经检查了rails 3.0.9 api的文档,如果我使用这种方式:

>> user = User.where(:email => "mhartl@example.com")
那就行了

所以我想知道为什么我不能使用find_by_的方法?其他查找方法可以工作,例如:find.first、find.last等。
谢谢你帮助我
fabien

实际上,finder在模型文件中工作,但不在控制台(开发环境)中工作。 奇怪的
fabien

实际上,finder在模型文件中工作,但不在控制台(开发环境)中工作。 奇怪的
法比恩

它怎么不起作用?
find\u by\u email
return
nil
?请解释清楚,它怎么不起作用?
find\u by\u email
return
nil
?请解释清楚。