我的Rails模型中有on: create
验证。在该验证中,我创建了TransactionRecord
模型的实例。
但是,TransactionRecord
仅在创建父模型(运行验证的模型)时保持不变,这看起来很奇怪。
在验证中,TransactionRecord对象对.persisted?
作出积极响应。但是,如果验证失败,则TransactionRecord
对象将消失。
我想这是一个ActiveRecord功能,如果“父”未保存或验证失败,则验证中发生的所有数据库事务都会回滚。
无论验证结果如何,我如何确保创建TransactionRecord
模型?
我知道验证不是创建大多数类型对象的理想场所。
问题已解决,但如果有问题,我仍然对此问题的解决方案感兴趣。
答案 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