【发布时间】:2014-01-05 03:16:22
【问题描述】:
我的表中有两列是唯一的:用户名和电子邮件。我正在尝试创建一种方法,该方法将自动检查用户输入的内容是否唯一。有点像
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
【问题讨论】:
-
你不能为此使用验证吗?
-
你说的验证是什么意思?我们在用户模型中有验证约束。在 JS/前端,我使用 parsleyjs 来验证表单。用户输入“用户名”字段,如果用户名已经存在,我们检查 db。用户在电子邮件字段中输入,如果电子邮件已经存在,我们会检查 db。
-
您可以使用
exists?方法。例如:Model.exists(key: value)
标签: ruby-on-rails ruby-on-rails-3 rails-activerecord