ruby-on-rails - Rails ActiveRecord 关系 - 避免编写 .blank?检查

标签 ruby-on-rails rails-activerecord

这更像是一个风格问题。

在编写查询时,我总是发现自己检查查询的结果是否为空白,而且似乎 - 我不知道,在某些方面过于冗长或错误。

前任。

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/

相关文章:

javascript - 使用 Rails 6 制作 Highcharts

ruby-on-rails - 我可以阻止 Rails 将实例变量从 Controller 传递给 View 吗?

ruby-on-rails - rails 5 : Add record to join table without model (has_and_belongs_to_many)

ruby-on-rails - 使用 hstore 字段作为关联字段

ruby-on-rails - 如何在 Rails 中使数据库字段只读?

ruby-on-rails - 如何创建 seeds.rb 数组?

ruby-on-rails - 找不到 libxml2 的包配置

ruby-on-rails - javascript - 未为生产编译的 Twitter Bootstrap jquery 插件

ruby-on-rails - Ruby on Rails 按子属性排序父模型

ruby-on-rails - View可以在Rails中调用某些Model方法吗?