这更像是一个风格问题。
在编写查询时,我总是发现自己检查查询的结果是否为空白,而且似乎 - 我不知道,在某些方面过于冗长或错误。
前任。
def some_action
@product = Product.where(:name => params[:name]).first
end
如果没有名称为 = params[:name] 的产品,我会得到一个 nil 值来破坏事物。
我已经开始写这样的东西
def some_action
product = Product.where(:name -> params[:name])
@product = product if !product.blank?
end
有没有更简洁的方法来处理 nil 和空白值?当事情依赖于其他关系时,这变得更令人头疼
前任。
def some_action
@order = Order.where(:id => params[:id]).first
# if order doesn't exist, I get a nil value, and I'll get an error in my app
if !@order.nil?
@products_on_sale = @order.products.where(:on_sale => true).all
end
end
基本上,有什么我还没有学到的东西可以使处理 nil、空白和潜在的 View 破坏实例变量更有效?
谢谢
最佳答案
如果只是样式相关,我会看看 Rails 的 Object# try方法或者考虑类似 andand .
使用您的示例,请尝试:
def some_action
@order = Order.where(:id => params[:id]).first
@products_on_sale = @order.try(:where, {:onsale => true}).try(:all)
end
或使用andand:
def some_action
@order = Order.where(:id => params[:id]).first
@products_on_sale = @order.andand.where(:onsale => true).andand.all
end
关于ruby-on-rails - Rails ActiveRecord 关系 - 避免编写 .blank?检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248964/