繁体   English   中英

如果对象不存在,在ruby中忽略错误的简单方法

[英]Simple way in ruby to ignore error if object doesn't exist

我有两个对象:葡萄酒,品牌

Brand has_many :wines
Wine belongs_to :brand

如何简化以下代码:

<%= @wine.brand.name if @wine.brand %>

我意识到它已经非常简单,但是我的代码中存在一些不同的复杂性,因此很麻烦。 我想做的事情大致如下:

<%= &@wine.brand.name %>

它基本上忽略了错误。 在PHP中,您可以执行此操作,但我找不到针对ruby的推论。

您可以使用try方法:

<%= @wine.brand.try(:name) %>

我希望这样做如下:

class Wine  
  def brand_name
    brand.present? ? brand.name : ''
  end
end

这样可以使您的视图更加清晰:

<%= @wine.brand_name %>

您可以使用delegate

class Wine < ActiveRecord::Base
  belongs_to :brand
  delegate :name, to: :brand, prefix: true, allow_nil: true
end

这将创建Wine#brand_name方法,返回品牌name ,如果品牌不存在,则返回nil

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM