如何从DB表中检查值?

时间:2013-04-21 08:24:16

标签: ruby-on-rails

我想从数据库创建一个简单的检查值。这是我的代码:

def check_user_name(name, email)
db_name = Customers.find_by_name(name).to_s
 db_email = Customers.find_by_email(email).to_s
if name == db_name && email == db_email  
  return 'yes'
 else 
  return 'no'   
end
end

但我总是'不'变种......为什么?

2 个答案:

答案 0 :(得分:0)

因为您在to_s模型上调用Customers而未实际获取该名称。你拥有的两条获取行应该是:

Customers.find_by_name(name).name.to_s # to_s probably not necessary if you know this field is a string
Customers.find_by_email(email).email

但是,您正在向数据库发出两个单独的请求。我不知道这是什么目的(因为你可以选择两个不同的客户),但你可以这样做:

if Customers.where(name: name, email: email).exists?
  "yes"
else
  "no"
end

但是,由于您是按名称和电子邮件选择的 - 我强烈建议您确保将这些字段编入索引,因为包含这些请求的大型表会使服务器陷入困境并使该路由变得相当慢(我实际上会建议您寻求其他更可行的路线,但我想提一下。)

答案 1 :(得分:0)

当您提供Customers.find_by_name(姓名)时,您将无法获得客户的姓名。实际上它会返回activerecord对象,所以从这个对象你需要得到一个客户的名字和电子邮件,如下所示,

name = Customers.find_by_name(name).name
email = Customers.find_by_email(email).email

现在,您将从DB获得匹配数据的确切名称和电子邮件。