具有 Active Record RoR 的基于动态属性的查找器,Model.find_by_ 不起作用
我是 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 => "[email protected]",
?> :password => "foobar", :password_confirmation => "foobar")
>> user = User.find_by_email("[email protected]")
>> user.has_password?("foobar")
=> true
我的问题是使用基于属性的查找器 find_by_(属性的名称)。在我的示例中,通过电子邮件查找。
实际上,rails 似乎不接受 find_by_ 作为方法。仍然使用上面的示例,在 user.has_password?("foobar") 行处,rails 返回错误: NoMethodError:未定义的方法。方法 has_password?在我的模型中定义良好。
我已经检查了rails 3.0.9 api的文档,如果我使用这种方式:
>> user = User.where(:email => "[email protected]")
那么它就可以工作......
所以我想知道为什么我不能使用find_by_方法?其他查找方法也有效,例如:find.first、find.last 等。
谢谢你帮助我 法比安
I am a newby with RoR,
Environment : Rails 3.09 and ruby 1.9.2p290 installed on leopard
I am following carefully the tutorial of Michael hartl (http://ruby.railstutorial.org/).
At the chapter 7, with the console we should test this code :
$ rails console --sandbox
>> User.create!(:nom => "Michael Hartl", :email => "[email protected]",
?> :password => "foobar", :password_confirmation => "foobar")
>> user = User.find_by_email("[email protected]")
>> user.has_password?("foobar")
=> true
My problem is with the use of the attribute based finders , find_by_(the name of the attribute). In my example find_by_email.
Actually, rails doesn't seem to accept find_by_ as a method. Still with the example above, at the line user.has_password?("foobar") rails returns the error :
NoMethodError: undefined method. The method has_password? is well defined in my model.
I have checked the doc of the api of rails 3.0.9, and if I use this way :
>> user = User.where(:email => "[email protected]")
then it works....
So I am wondering why I can't use the method find_by_ ? Other find methods work ex: find.first, find.last, etc..
Thank you to help me
fabien
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实际上,查找器在模型文件中工作,但不在控制台(开发环境)中工作。
奇异的
法比安
Actually the finder works within the model file but not within the console (development environment).
bizarre
fabien