繁体   English   中英

为什么Rails不接受嵌套哈希选项之外的:message符号?

[英]why does rails not accept the :message symbol outside of a nested hash option?

这是我的代码。 第一个注释行工作正常; 第二个没有。 这里的文档是粗略的-在“ validates”方法下没有提及:message选项,但是“ validates_format_of”说:message很好。 (http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates)这里发生了什么?

class Product < ActiveRecord::Base
  validates :title, :description, :image_url, :presence => true
  #validates :title, :length => {:minimum => 10, :message => "help!"}
  #validates :title, :length => {:minimum => 10}, :message => "help!"
  validates :price, :numericality => {:greater_than_or_equal_to => 0.01}
  validates :image_url, :format => {
    :with => %r{\.(gif|jpg|png)$}i,
    :message => 'must be a URL for GIF, JPG or PNG image.'
  }
end

在第一行注释中,消息值是:length参数的一个选项,它似乎被忽略了。 测试尝试

validates :title, :length => {:minimum => 10, :foobar => "help!"}

并且您会发现它可以正常工作而不会产生错误。

validates只是默认验证器的快捷方式。 您似乎想要设置validates_format_of:message选项,所以我认为您需要以下内容:

validates :title, length => {:minimum => 10}, :format => { :message => "help!" }

长度验证在以下方面进行:

validates_length_of:title,:minimum => 10,:message =>“帮助!”

活动记录验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM