如何查询id以外的内容?

时间:2015-11-25 01:25:23

标签: ruby-on-rails

我有一个包含这些字段的模型:

Department:
name:string
deptid:integer

我已经运行rake db:migrate并在表格中播放了5条记录。在部门控制器中,我有:

def show
  @dept = Department.find(params[:deptid])
end

在show.html.erb中:

<%= @dept.name %>

在routes.rb

get 'departments/:deptid' => 'departments#show'

当我这样做localhost:3000 / show / 2时,我得到第二条记录。如果我改为使用localhost:3000 / show / 212,其中deptid = 212有效,我得到一个

  

无法找到'id'= 212

的部门

错误。既然我已经指定了deptid而不是id(主键),为什么还要查找PK?

1 个答案:

答案 0 :(得分:3)

find方法将始终按主键查找记录 - 在这种情况下,您没有更改主键,因此它尝试按id查找记录。

如果您想要按其他字段查找单个记录,可以使用find_by(或find_by!,区别在于find_by!如果没有记录则会引发异常发现,就像find那样。在这种情况下,您可能需要:

Department.find_by!(deptid: params[:deptid])