在我的模型中,我有:

validate :my_custom_validation

def my_custom_validation
 errors.add_to_base("error message") if condition.exists?
end

我想为我的客户可用性添加一些参数,如下所示:
validate :my_custom_validation, :parameter1 => x, :parameter2 => y

如何编写mycustomvalidation函数来解释参数?

最佳答案

验证器通常有一个数组参数,首先指示要验证的字段,最后(如果存在)指示一个带有选项的散列。在您的示例中:

: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

09-26 15:11