2012-06-09 105 views
0

我想要運行這些命令:運行命令3

require 'fileutils' 
FileUtils.rm_rf Dir.glob("#{Rails.root}/public/uploads/tmp/*") 

如果驗證在我的模型失敗的回調:

我見過回調after_validation

我該如何檢查驗證是否正常,或者如果驗證與after_validation回調驗證不正確(KO)?

回答

0

的解決方案檢查對我來說是:

after_validation :empty_tmp 

    protected 
    def empty_tmp 
    if self.errors.any? 
    require 'fileutils' 
    FileUtils.rm_rf Dir.glob("#{Rails.root}/public/uploads/tmp/*") 
    end 
    end 
2

您可以

if your_model.errors.empty? 
    # run commands 
end 
2
class User < ActiveRecord::Base 

    after_validation :do_something_if_validation_fails, :unless => lambda { errors.empty? } 

    protected 
    def do_something_if_validation_fails 
    logger.info "Validation failed lets do something" 
    end 
end 
+0

你會得到無限循環! – jdoe

+0

這很遺憾,因爲它看起來不錯。 – Rob

+0

你沒有看到這個問題,對吧?通過指定':unless =>:valid?',您將從驗證回調中觸發驗證回調。 – jdoe