验证字符串与另一个属性的长度

Ale*_*lex 1 validation ruby-on-rails

我有一个有2个属性的模型

  • 名称
  • URL_NAME

我想确保url_name中的字符数小于或等于名称中的字符数.我尝试过做类似下面的事情,但似乎没有用.有没有人有什么建议?

class Country < ActiveRecord::Base
  has_many :product

  validates_presence_of :name, :url_name
  validates_length_of :url_name, :maximum => :name.length

end
Run Code Online (Sandbox Code Playgroud)

我是ruby和rails的新手,请原谅我,因为我对语言中的一些基本概念缺乏了解:)

Aug*_*sto 5

默认验证方法不能这样做(它们非常基本),但您可以创建自定义验证方法,例如:

validate :url_length

def url_length
  errors.add(:url_name, "error") unless url_name.length <= name.length
end
Run Code Online (Sandbox Code Playgroud)