在我的模特中,我有:
validate :my_custom_validation
def my_custom_validation
errors.add_to_base("error message") if condition.exists?
end
我想像mycustomer vaildation那样添加一些参数:
validate :my_custom_validation, :parameter1 => x, :parameter2 => y
如何编写mycustomvalidation函数来计算参数?
答案 0 :(得分:6)
验证器通常有一个数组参数,首先指示要验证的字段,最后指示(如果存在)带有选项的散列。在您的示例中:
:my_custom_validation, parameter1: x, parameter2: y
:my_custom_validation将是一个字段名称,而parameter1:x,parameter2:y将是一个哈希:
{ parameter1: x, parameter2: y}
因此,您可以执行以下操作:
def my_custom_validation(*attr)
options = attr.pop if attr.last.is_a? Hash
# do something with options
errors.add_to_base("error message") if condition.exists?
end
答案 1 :(得分:1)
你可以这样做:
def validate
errors.add('That particular field', 'can not be the value you presented') if !self.field_to_check.blank? && self.field_to_check == 'I AM COOL'
end
无需调用引用它,因为我相信在验证任何validates_uniqueness_of之后验证方法(如果存在)。
已添加:Rails API文档here中的更多信息。