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

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

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

我有2个类和/回调路由. User类是db模型,Authentication类具有用于连接OAuth的各种方法,以及将调用Authentication.save方法的/ callback路由.

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

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

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

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
点赞