如何在RubyonRails中的两个不同模型之间使用自定义验证?
我有两个模型如何验证这两个模型之间的列。
最干净的方法是创建单独的验证器类,而不仅仅是一个自定义的验证方法。验证器实际上只是实现#validate
或#validate_each
:的ActiveModel::Validator
或ActiveModel::EachValidator
的子类
class TitleCaseValidator < ActiveModel::Validator
def validate(record)
unless record.name[0] == record.name[0].upcase
record.errors[:title] << 'must be title cased'
end
end
end
class Album
validates_with TitleCaseValidator
end
class Book
validates_with TitleCaseValidator
end
class TitleCaseValidator < ActiveModel::EachValidator
def validate(record, attribute, value)
unless value[0] == value[0].upcase
record.errors[attribute] << 'must be title cased'
end
end
end
class Album
validates :title, title_case: true
end
class Artist
validates :name, title_case: true
end
请参阅执行自定义验证。