我有两个模式:Person
和Address
,我想在一次交易中产生。 这就是说,我要尝试创建<代码>Person/code>,如果成功,则建立相关的<代码>Address/code>。 我愿使用<代码>save semantics (return true
或false
,而不是save!
semantics (raise ancode>ActiveRecord:StatementInvalid)。
这是因为<编码>用户>save。 does 引发交易退缩:
class Person
def save_with_address(address_options = {})
transaction do
self.save
address = Address.build(address_options)
address.person = self
address.save
end
end
end
(保留<代码>本身。 自助电话: 除
栏外,其余部分则无助,因为<代码>Person即使在<代码>(<<><>><>>>>> 代码>失效时仍可节省费用。
而这种工作是因为它提出了<代码>。 积极记录:在<条码>中声明无效条码>的例外,不触发<条码>。 积极记录:Rollback:
class Person
def save_with_address(address_options = {})
transaction do
save!
address = Address.build(address_options)
address.person = self
address.save!
end
end
end
铁路文件 具体警告不要捕获<代码> 积极记录:声明 页: 1
我猜想我的第一个问题是:为什么这种交易会阻碍......在两种储蓄中进行交易?