在验证中创建记录

时间:2012-11-26 11:20:02

标签: ruby-on-rails activerecord

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

但是,TransactionRecord仅在创建父模型(运行验证的模型)时保持不变,这看起来很奇怪。

在验证中,TransactionRecord对象对.persisted?作出积极响应。但是,如果验证失败,则TransactionRecord对象将消失。

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

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

PS

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

修改

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

2 个答案:

答案 0 :(得分:0)

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

尝试将TransactionRecord创建移至before_create回调。

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

答案 1 :(得分:0)

class TransactionRecord 

validate :persisted, :before => :create

private
  def persisted
    if self.field_name.value?
      errors.add(:field_name, 'is created.')
    end
  end
end