gpt4 book ai didi

ruby-on-rails - 如何将现有记录添加到 has_many 而不立即保存到数据库?

转载 作者:行者123 更新时间:2023-12-04 02:23:41 25 4
gpt4 key购买 nike

假设我有这个:

class Pirate < ActiveRecord::Base
has_many :parrots
validates_presence_of :name
end

class Parrot < ActiveRecord::Base
belongs_to :pirate
end

我已经有 ids 1 到 10 的现有 Pirates 和 Parrots。现在我想这样做:
p = Pirate.first
p.name = nil
p.parrot_ids = [1,2,3]
p.save if p.valid?

因为盗版对象无效(缺少名称),所以我不想保存它。但是,鹦鹉现在与海盗相关联,并且已在数据库中提交。

如何分配鹦鹉,但只有在 p.save 成功时才将鹦鹉的链接保存到数据库中?即,如何在一笔交易中保存海盗和鹦鹉的链接?

最佳答案

您可能应该看看 Active Record 事务。
您可以将代码包装在事务块中。事务是保护块,其中 SQL 语句只有在它们都可以作为一个原子操作成功时才​​是永久的

http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

关于ruby-on-rails - 如何将现有记录添加到 has_many 而不立即保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7291115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com