繁体   English   中英

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

[英]Better way to build has_one association or update if it exists

我的折扣类有一个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

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

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

def fetch_period
  end_date = ...
  period = sales_period || build_sales_period
  period.end = end_date
end

find_or_initialize类似于first_or_initialize 例如:

def fetch_period
  end_date = ...
  sales_period.find_or_initialize_by_end(end_date)
end

另外,我重命名end ,这是一个ruby关键字。 当某些东西试图eval代码或某些东西时,你可能会得到一些奇怪的错误,这将是非常混乱的。

暂无
暂无

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

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