我的表格中有两列是唯一的:用户名和电子邮件。我正在尝试创建一种方法,该方法将自动检查用户输入是否唯一。这就像
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
答案 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)