[英]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.