Rails 4:has_one关联是否有first_or_initialize?

时间:2014-06-05 16:19:28

标签: ruby-on-rails

我有Purchase has_one :shipping_address

在我的一种方法中,我有这个:

@shipping_address ||= purchase.build_shipping_address(
  first_name: shipping_address_first_name,
  ...
)

但是,我想抓住附加到购买的现有shipping_address(如果它存在),而不是总是创建一个新的替换(我相信删除旧的替换并在数据库中创建一个新替换。)

有没有办法在Rails中执行purchase.first_or_build_shipping_address(...)

1 个答案:

答案 0 :(得分:2)

试试这个:

@shipping_address || = purchase.shipping_address || purchase.build_shipping_address

只要第一个返回nil,你就会创建一个新的。