我试图写我的第一个宝石,它有信用卡领域的验证。我创建了一个模块MyCcValidation
,以下内容有效:
class User < ActiveRecord::Base
include MyCcValidation
my_validation_helper { some_data }
end
我希望实现的目标是能够将gem添加到我的Gemfile
并且my_validation_helper
可用&#34;开箱即用&#34;。我尝试了很多方法来扩展ActiveModel::Validations
但到目前为止没有运气。它是我的第一颗宝石,所以我可能会遗漏一些东西,例如devise
似乎没有任何问题。应该怎么做?
答案 0 :(得分:1)
直接扩展ActiveModel::Validations
并不是一个好主意。尝试定义自定义验证器类,然后重新打开ActiveModel::Validations::HelperMethods
模块并在那里添加your_validation_helper
。
示例:
class MyCustomValidator < ActiveModel::Validator
def validate(record)
# ...
end
end
module ActiveModel::Validations
module HelperMethods
def validates_my_custom_stuff(*attr_names)
validates_with MyCustomValidator, attr_names
end
end
end
在内部,ActiveModel::Validations
扩展了HelperMethods,因此您的验证帮助方法应该适用于所有模型。