gpt4 book ai didi

ruby-on-rails-3 - Rails 3 - 将参数传递给自定义验证方法

转载 作者:行者123 更新时间:2023-12-03 00:39:07 25 4
gpt4 key购买 nike

我希望将值传递给自定义验证。我做了以下测试:

验证:print_out, :parameter1 => '你好'

这样:

def print_out (input="blank")
puts input
end

创建对象或保存对象时,输出为“空白”。但是,如果直接调用:

object.print_out“测试”

改为输出测试。问题是,为什么我的参数不能正确传递?

最佳答案

在“config\initializers\”目录中,您可以创建自己的验证。作为示例,让我们创建一个验证“validates_obj_length”。不是一个非常有用的验证,但一个可以接受的示例:

在“config\intializers\”目录中创建文件“obj_length_validator.rb”。

ActiveRecord::Base.class_eval do
def self.validates_obj_length(*attr_names)
options = attr_names.extract_options!
validates_each(attr_names, options) do |record, attribute, value|
record.errors[attribute] << "Error: Length must be " + options[:length].to_s unless value.length == options[:length]
end
end
end

一旦你有了这个,你就可以使用非常干净的:

validates_obj_length :content, :length => 5

基本上,我们重新打开 ActiveRecord::Base 类并实现一个新的子验证。我们使用 splat (*) 运算符来接受参数数组。然后我们将选项的哈希值提取到“options”变量中。最后我们实现我们的验证。这使得验证可以随时与任何模型一起使用并保持干燥!

关于ruby-on-rails-3 - Rails 3 - 将参数传递给自定义验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com