![](/img/trans.png)
[英]Ruby on Rails detecting a user, but still returning an error that it doesn't exist
[英]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.