Find_by 返回第一条记录

Ran*_*ies 1 ruby-on-rails ruby-on-rails-4

使用find_by并仅提供 id 参数时,find_by返回表中的第一个条目。

例如

@article = Article.find_by(params[:article_id])
Run Code Online (Sandbox Code Playgroud)

与回报的文章id = 1,而使用find使我的文章id = :article_id

有人可以解释为什么 find_by 返回带有第一个 id 的记录吗?

Rah*_*ngh 5

使用该find方法,您可以检索与匹配任何提供的选项的指定主键对应的对象。

所以这是正确的语法

@article = Article.find(params[:article_id])
Run Code Online (Sandbox Code Playgroud)

whilefind_by方法查找符合某些条件的第一条记录

所以你应该写

@article = Article.find_by(id:params[:article_id])
Run Code Online (Sandbox Code Playgroud)

来源:http : //guides.rubyonrails.org/active_record_querying.html