构建has_one关联或更新的更好方法(如果存在)

lul*_*ala 7 ruby-on-rails

我的折扣类有一个sales_period.我想编写一个方法,可以在它不存在时构建这个关联,或者在它存在时更新它.目前我正在编写以下条件.

class Discount < ActiveRecord::Base
  has_one :sales_period

  def fetch_period
    end_date = ...
    if sales_period.nil?
      build_sales_period( end: end_date )
    else
      sales_period.end = end_date
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,类似于find_or_create?

Bra*_*est 13

不是你想要的,但你可以稍微缩短它.

def fetch_period
  end_date = ...
  period = sales_period || build_sales_period
  period.end = end_date
end
Run Code Online (Sandbox Code Playgroud)