是否可以执行以下操作:
if @user = User.friendly.find(params[:id])
// logic here
else
// do something if user doesn't exist
end
由于某种原因,这会引发以下错误:
ActiveRecord::RecordNotFound
答案 0 :(得分:4)
[The] RecordNotFound [引发异常]没有记录响应
find
方法。具有给定ID的行不存在或行不符合其他限制。有些查找调用[如find_by*
方法]不会引发此异常,表示未找到任何内容。
使用find_by_id
(或find_by
),如果找不到该项,将返回nil
:
friendly.find_by_id params[:id]
friendly.find_by id: params[:id]
答案 1 :(得分:1)
根据Rails find getting ActiveRecord::RecordNotFound的建议,我会使用开头/结尾,因为.find
假设引发异常:
begin
@user = User.friendly.find(params[:id])
# rest of code...
rescue ActiveRecord::RecordNotFound => e
# other code; @user will automatically be nil since unassigned
end
但这确实是个人偏好的问题。