如何知道表格中哪些列被认为是唯一的?

时间:2014-01-05 03:16:22

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

我的表格中有两列是唯一的:用户名和电子邮件。我正在尝试创建一种方法,该方法将自动检查用户输入是否唯一。这就像

def check_if_taken(arg = {})
  params.each do |key, value|
    if (key is a unique column???)
      return true if User.where(key => value).present?
    end
  end
  false
end

如何确定表格中的唯一列?

编辑:重构

  def self.is_taken?(params = {})
    params.detect do |key, value|
      User.where(key => value).present?
    end
  end

1 个答案:

答案 0 :(得分:0)

您可以尝试:

class ActiveRecord::Base 
  def self.unique_attribute?(attribute_name)
    !!_validators[attribute_name] && !!_validators[attribute_name].find {|v| v.is_a? ActiveRecord::Validations::UniquenessValidator)
  end
end

然后:

YourModel.unique_attribute?(attribute_to_check)