是否可以强制Rails动态查找器抛出ActiveRecord::RecordNotFound
异常而不是在找不到结果时返回nil
?
例如,如果名为'Nuka-Cola'的饮料不存在:
@not_found = Beverage.find_by_name('Nuka–Cola')
而不是
@not_found == nil
可以
.find_by_name('Nuka–Cola')
方法调用抛出ActiveRecord::RecordNotFound
异常?
或者我是否必须检查nil
并手动抛出异常?
答案 0 :(得分:21)
使用爆炸版。
@not_found = Beverage.find_by_name!('Nuka–Cola')
答案 1 :(得分:-2)
非常感谢,幌子
如果您正在处理一些REST API,那将会更有用。 而不是显示html异常页面,渲染有意义的JSON或XML。
class ApiController < ApplicationController
rescue_from ActiveRecord::RecordNotFound, :with => :not_found
def not_found(exception = nil)
render :json => { :message => exception.message, :request => request.fullpath },
:status => 404
end
end