【问题标题】:Get method name that called validator in Rails 5获取在 Rails 5 中调用验证器的方法名称
【发布时间】:2018-01-19 16:11:42
【问题描述】:

我有一个带有方法的控制器

def create
   if passenger.valid?
   ....
end

在我的乘客模型中,我有我的验证规则。这些规则取决于调用验证器的方法。

所以问题是,我如何才能在我的模型中获取调用验证器的名称方法,在本例中为 'create'

【问题讨论】:

  • 这并不能解决我的问题,因为它只返回模型的路径。
  • 也许最好将问题改写为获取呼叫者姓名或实现条件验证的方法,而不是将两者结合起来。

标签: ruby-on-rails validation ruby-on-rails-5


【解决方案1】:

试试这个:

caller_locations(1,1)[0].label

【讨论】:

    【解决方案2】:

    我建议在这个案例的模型中设置一个attr_accessor

    # In model
    attr_accessor :validation_caller
    
    def valodation_rules
      if @validation_caller.eql?('create')
        # validations
      else
        # validations
      end
    end
    
    # in controller
    model_instance.validation_caller = 'create'
    

    希望对你有帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2011-07-03
      • 1970-01-01
      相关资源
      最近更新 更多