" find_by"在使用Michel Hartl的教程时出错,即使使用Rails 4也是如此

时间:2013-08-14 12:27:00

标签: ruby-on-rails railstutorial.org

我正在关注Michael Hartl的Rails教程。我正在编写代码以更改标题链接的部分,具体取决于用户是否已登录或退出。

当我将代码添加到_header部分时,甚至从教程本身复制,当我重新加载主页时,我得到了红色的错误页面。它显示以下消息:

undefined method `find_by' for #<#<Class:0x5b76358>:0x5b75b60>

然后它突出显示代码

<% if signed_in? %>

这是添加到_header部分的代码的一部分。

到目前为止,我完全编写了教程中显示的代码。我顺便使用Rails 4 ......所以我们从使用旧的Rails版本得到的'find_by'方法问题就不是这里的了。

提前致谢!

2 个答案:

答案 0 :(得分:0)

从材料中学习是好的,但我建议你不要复制整个东西,因为它会大大减少学习量。如果你想通过id查找,你可以使用find(id_value)并且如果你想根据特定的列查找,那么find_by对于所有版本的rails中的模型都没有直接的方法,那么你应该使用{ {1}}这将有效。如果您需要更多说明或错误仍然存​​在,请询问。

答案 1 :(得分:0)

两种解决方案:

  1. 使用Rails 4而不是Rails 3.2(我认为你现在使用它) - 在Rails 4中引入了find_by方法,而Michael Hartl的教程是为Rails 4编写的。

  2. 使用动态查找器,使用find_by方法,例如:

    @current_user ||= User.find_by_remember_token(remember_token)
    
  3. 我个人建议解决方案1。