在我的 Rails 3.2.11 应用程序中,我需要唯一性验证器来支持条件,以便忽略软删除的记录。在 GitHub 上,我发现了一个拉取请求(https://github.com/rails/rails/pull/5321),但这个功能似乎不是当前 Rails 版本的一部分。现在我为 UniquenessValidator 类创建了一个补丁,如下所示:
module UniquenessValidatorExtension
def build_relation(klass, table, attribute, value)
relation = super
relation.merge!(options[:conditions]) if options[:conditions]
relation
end
end
ActiveRecord::Validations::UniquenessValidator.send :include, UniquenessValidatorExtension
为了加载它,我创建了一个初始化程序。问题是,我的方法永远不会被调用。我做错了什么?
这是当前 UniquenessValidator 类的链接:https ://github.com/rails/rails/blob/0d73d6e7b6dd1900f105397460b777ef6c03d3b6/activerecord/lib/active_record/validations/uniqueness.rb