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