2015-10-30 50 views
0

如何將下面的find查詢方法轉換爲使用where方法(只是爲了更好地在rails中)?將Rails Active Record查詢'find'方法轉換爲'where'方法

@deals = Deal.find(params[:id]) 

我已經試過

@deals = Deal.where(deal_id: params[:id]) 

@deals = Deal.where("deal_id = params[:id]") 

,但我沒有得到任何結果 - 我收到未定義的方法錯誤和其他錯誤的分類。任何幫助?

感謝

回答

1
@deal = Deal.find(params[:id]) 

相當於

@deal = Deal.where(id: params[:id]).first 

。如果記錄不存在,.find()將返回一個異常。

.where()。如果記錄不存在,先返回nil。

1

你將使你的查詢,像這樣:

@deal = Deal.where(id: params[:id]) 
+0

要添加到@ DustinFisher的回覆中,只需謹慎,'.where'將返回一個集合而不是單個對象。 –

+0

嗯,我試過了,並收到一個未定義的方法,我在視圖中輸出查詢。 「#標題」爲#「。不知道什麼可能是錯的。出於某種原因,我沒有從那裏查詢任何東西,找到一個仍然有效。 – ben3019201

+0

@ user1852651可能是我收到方法錯誤的原因嗎?因爲它給我一個集合,而不是一個對象與所有的數據? – ben3019201

2

的安全的做法是:

@deals = Deal.where("deal_id = ?", params[:id]) 
相關問題