ruby-on-rails - 删除或覆盖由父类(super class)或混合添加的 ActiveRecord 验证

标签 ruby-on-rails ruby validation clearance

我在我的 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/

相关文章:

ruby-on-rails - 如何在 Rails 中为每个表创建完整的审计日志?

java - spring中基于groups的动态POJO验证

javascript - 在 nintex 表单中使用 javascript 验证电子邮件地址、电话、身份证号码

ruby-on-rails - Rails 命令只能在一个终端上运行

ruby-on-rails - 应该使用添加或删除迁移,还是对现有迁移文件进行更改?

ruby - 无法在我的 Rakefile 的类中调用 "sh"

Java:nextInt() 验证不起作用属性

ruby-on-rails - 收款人…………不接受以这种货币支付的款项

javascript - Backbone JS Turbolinks 未定义问题

ruby - 用于抓取的 Node.js 或 Ruby