0

on: create我在我的 Rails 模型中有一个验证。在该验证中,我创建了一个TransactionRecord模型实例。

但是,TransactionRecord只有在创建父模型(运行验证的模型)时才会保留,这看起来很奇怪。

在验证中,TransactionRecord 对象对.persisted?. 但是,如果验证失败,该TransactionRecord对象就会消失。

我想这是一个 ActiveRecord 功能,如果“父级”没有保存或验证失败,验证中发生的所有数据库事务都会回滚。

无论验证结果如何,如何确保TransactionRecord创建模型?

ps

我知道验证不是创建大多数类型对象的理想场所。

编辑

问题已解决,但我仍然对此问题的解决方案感兴趣(如果有的话)。

4

2 回答 2

0
class TransactionRecord 

validate :persisted, :before => :create

private
  def persisted
    if self.field_name.value?
      errors.add(:field_name, 'is created.')
    end
  end
end
于 2012-11-26T11:31:57.603 回答
0

验证不是创建其他 ActiveRecord 对象的好地方。

尝试将TransactionRecord创建移动到before_create回调。

请记住,即使对象未通过验证且未持久化,也可能会创建这些记录。

于 2012-11-26T11:25:16.663 回答