我是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等。
谢谢你帮帮我
法比安
答案 0 :(得分:0)
实际上,finder在模型文件中工作,但不在控制台(开发环境)中工作。 奇异的 法比安