在我的User
模型中,我有一个after_created回调为
after_create :count_files
def count_files
errors[:base] << "error working"
errors.add(:base, "error working")
return false
end
正如您所看到的,我总是添加基本错误并始终返回false,但仍然创建了用户。我认为,如果after_create
返回false,则会发生自动回滚,而不是将数据保存在数据库中。但就我而言,数据始终保存在数据库中,事务回滚也不会发生。这是为什么?如果after_create
失败,我怎样才能阻止创建用户?
答案 0 :(得分:2)
after_create
表示事务已经关闭,对象已经创建。
而是after_create
您需要添加自定义验证,例如:
validate :count_files
private
def count_files
count = counting_hear
errors.add(:base, "error working") if count < 10
end
<强> EDITED 强>
但是如果你想使用回调(after_create
),只需提高exeption return false
after_create :count_files
def count_files
errors[:base] << "error working"
errors.add(:base, "error working")
raise MySuperCustomExeption
end