我在我的 Rails 应用程序中使用 Clearance 进行身份验证。 Clearance::User
mixin 向我的 User
模型添加了一些验证,但其中有一个我想删除或覆盖。这样做的最佳方法是什么?
有问题的验证是
validates_uniqueness_of :email, :case_sensitive => false
这本身还不错,但我需要添加 :scope => :account_id
。问题是,如果我将其添加到我的 User
模型
validates_uniqueness_of :email, :scope => :account_id
我得到了两种验证,而且 Clearance 添加的验证比我的更严格,所以我的没有效果。我需要确保只有我的运行。我该怎么做?
最佳答案
我会 fork GEM 并添加一个简单的检查,然后可以覆盖它。我的例子使用了一个问题。
关注点:
module Slugify
extend ActiveSupport::Concern
included do
validates :slug, uniqueness: true, unless: :skip_uniqueness?
end
protected
def skip_uniqueness?
false
end
end
型号:
class Category < ActiveRecord::Base
include Slugify
belongs_to :section
validates :slug, uniqueness: { scope: :section_id }
protected
def skip_uniqueness?
true
end
end
关于ruby-on-rails - 删除或覆盖由父类(super class)或混合添加的 ActiveRecord 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309757/