具有Active Record RoR的动态基于属性的查找程序,Model.find_by_不起作用

时间:2011-08-29 23:35:54

标签: ruby-on-rails-3 activerecord dynamic-finders

我是RoR的新手,

环境:在豹子上安装Rails 3.09和ruby 1.9.2p290

我正在仔细阅读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 

我的问题是使用基于属性的finder,find_by_(属性的名称)。在我的例子中,find_by_email。

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

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

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

然后它起作用....

所以我想知道为什么我不能使用find_by_方法?其他查找方法有效:ex.find.first,find.last等。
谢谢你帮帮我 法比安

1 个答案:

答案 0 :(得分:0)

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