【问题标题】:debug Model validation in Rails在 Rails 中调试模型验证
【发布时间】:2017-05-06 07:13:34
【问题描述】:

我是 RoR 的新手,我正在尝试在我的模型中调试自定义验证。我在我的代码以及puts self.input_values.inspectRails.logger.info self.input_values.inspect 中尝试了以下内容,但日志中没有结果。我是否解决了错误的调试?如何检查 self.input_values 的值?

  validate :i_is_i



def i_is_i
    unless self.cust_record == 'number' && self.input_values.all? do |value|
                                       '#################'
                                       Rails.logger.debug self.input_values.inspect
                                       '#################'
                                       value.match(/^\d*$/)
                                       end
      errors.add(:input_values, "only numbers!")
      throw(:abort)
    end
  end

【问题讨论】:

  • 你的验证方法“record_to_i”在哪里?
  • 如果你对断点没问题,你可以使用byebug添加断点并检查错误详情
  • byebugdebugger 添加到您的自定义验证方法并在您的控制台中进行调试。
  • @ChetanMehta 抱歉,提问时打错字了,我已经更正了。

标签: ruby-on-rails ruby validation debugging model


【解决方案1】:

它们可能不会被打印,因为条件失败并且它没有进入块内。做:

validate :i_is_i

def i_is_i
  p "CUST_RECORD >>>>>>>>>>>>>>>>> #{self.cust_record}"
  p "INPUT_VALUES >>>>>>>>>>>>>>>>> #{self.input_values.all?}"
  unless self.cust_record == 'number' && self.input_values.all? do |value|
    # Stuff you wanna do when it goes inside
  end
end

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多