2015-11-25 65 views
2

我有這些領域的典範:如何查詢id以外的內容?

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' 

當我這樣做本地主機:3000 /顯示/ 2,我得到第二個紀錄。如果我不是使用localhost:3000 /表演/ 212,其中DEPTID = 212是有效的,我得到一個

無法與 'ID'= 212

錯誤找處。既然我已經指定了deptid而不是id(主鍵),爲什麼它仍然在尋找PK?

回答

3

find方法將始終通過主鍵查找記錄 - 在這種情況下,您沒有更改主鍵,因此它正在嘗試通過id查找記錄。

如果您想通過一個不同的字段來查找單個記錄,你可以使用find_by(或find_by!,不同之處在於find_by!將引發異常,如果沒有找到記錄,就像find一樣)。在這種情況下,您可能想要:

Department.find_by!(deptid: params[:deptid]) 
相關問題