【问题标题】:run command if validation fail rails 3如果验证失败则运行命令 rails 3
【发布时间】:2012-06-09 11:26:04
【问题描述】:

我想运行这些命令:

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

如果我的模型中的验证失败并带有回调:

我看到了回调after_validation

如何使用after_validation 回调检查验证是否正常或验证是否不正确 (KO)?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 callback


    【解决方案1】:

    你可以检查

    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
      

      【讨论】:

      • 很遗憾,因为它看起来不错。
      • 你没有看到问题,对吧?通过指定:unless =&gt; :valid?,您将从验证回调中触发验证回调。
      【解决方案3】:

      我的解决方案是:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多