Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby&;Datamapper检查记录是否存在,以及在哪里?_Ruby_Oauth_Sinatra_Datamapper - Fatal编程技术网

Ruby&;Datamapper检查记录是否存在,以及在哪里?

Ruby&;Datamapper检查记录是否存在,以及在哪里?,ruby,oauth,sinatra,datamapper,Ruby,Oauth,Sinatra,Datamapper,我有一个基本的Ruby应用程序,我正在使用Sinatra、Datamapper构建,并使用OAuth进行用户身份验证。当我从Oauth服务接收到数据时,我将一个新用户的记录保存在SQLITE3DB中 我不知道怎么做的是如何验证用户数据库表中不存在用户记录。我可以使用用户的唯一id(uid)来交叉检查uid是否已存储,但我不确定在何处执行此操作 我有两门课和一条/callback路线。用户类是db模型,身份验证类具有连接到OAuth的各种方法,/callback路由将调用Authenticatio

我有一个基本的Ruby应用程序,我正在使用Sinatra、Datamapper构建,并使用OAuth进行用户身份验证。当我从Oauth服务接收到数据时,我将一个新用户的记录保存在SQLITE3DB中

我不知道怎么做的是如何验证用户数据库表中不存在用户记录。我可以使用用户的唯一id(uid)来交叉检查uid是否已存储,但我不确定在何处执行此操作

我有两门课和一条/callback路线。用户类是db模型,身份验证类具有连接到OAuth的各种方法,/callback路由将调用Authentication.save方法

我是否应该在Authentication.save方法中检查现有记录并返回布尔值或其他值?在身份验证中创建一个类似于Authentication.exists的新方法?(那会是什么样子?)或者我应该在/callback路径中进行检查


很抱歉,如果这不是100%清楚,我很难描述我的问题,而且我是一个绝对的Ruby初学者…

在创建新用户之前,您应该尝试检查是否存在具有相同登录名和电子邮件(例如)的用户:


我不确定,但它看起来可能会获取一个完整的对象集合来检查寄存器是否存在,这不是一个优化的解决方案。我将用
if User.count(:login=>User.login,:email=>User.email)==0
替换该条件。User.count更好,我不知道为什么我没有提到它,因为这是我通常做这类事情的方式。再想想,User.count不起作用:。我也被它咬了
require 'dm-aggregates'

user=User.new
user.login=your_login_data_returned_by_oauth
user.email=your_email_data_returned_by_oauth
# And so on...
user.save if User.count(:login=>user.login, :email=>user.email) == 0