我有一个ActiveRecord模型:
class Message < ActiveRecord::Base
有2个属性:content
(字符串)和max_content_length
(整数)
两者都是动态的并由用户设定
我正在尝试使用content
整数来验证max_content_length
字符串的长度,如下所示:
validates_length_of :content, maximum: self.max_content_length
或者像这样:
validates_length_of :content, maximum: lambda{ self.max_content_length }
但validates_length_of会抛出“找不到方法”或“最大必须是非负整数或无穷大”异常(分别)。
有没有其他方法可以“注册”max_content_length
函数作为长度的验证器?
谢谢!
(我知道这个问题可能是this question和this one的重复,但不幸的是,那里的答案有点偏离主题并且令人困惑)
答案 0 :(得分:2)
进行自己的验证:
class Message < ActiveRecord::Base
validate :validate_content_length
private
def validate_content_length
if content.length > max_content_length
errors.add :content, "too long (must be #{max_content_length} characters or less)"
end
end
end
此处的帮助指南http://guides.rubyonrails.org/active_record_validations.html#performing-custom-validations