簡體   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