Find_byreturns第一条记录

Find_by returns first record

当使用 find_by 并且只提供一个 id 参数时,find_by returns table.

中的第一个条目

例如

@article = Article.find_by(params[:article_id])

returns 文章 id = 1 使用 find 给我文章 id = :article_id

谁能解释一下为什么 find_by returns 第一个 id 的记录?

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

所以这是正确的语法

@article = Article.find(params[:article_id])

while find_by 方法找到匹配某些条件的第一条记录

所以你应该写

@article = Article.find_by(id:params[:article_id])

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

你也可以试试@article = Article.find_by(:id => params[:article_id])