给两个模型,有一个has_one
关联:
class ShopInfo
belongs_to :shop
end
class Shop
has_one :shop_info
end
s = Shop.create
ss1 = s.create_shop_info
在我的代码的其他地方
ss2 = s.create_shop_info
在此之后,ss1.shop_id 被设置为 nil,因此 ss1 现在是一个孤立记录。
有什么方法可以删除以前的记录而不是将它们设置为零吗?
最佳答案
默认情况下,has_one 关联执行一个nullify
。添加 dependent::destroy
解决了问题。
class Shop
has_one :shop_info, dependent: :destroy
end
如果有人想要更多信息,has_one 替换记录的 ActiveRecord 代码是这样的:
但是如果您在关联中添加一个dependent
选项,也会执行delete
方法:
关于ruby-on-rails - has_one 关系如果超过一个则自动设置为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893028/