4

Sinatra、Datamapperで構築している基本的なRubyアプリがあり、OAuthを使用したユーザー認証があります。Oauthサービスからデータを受信すると、新しいユーザーのレコードをsqlite3データベースに保存します。

方法がわからないのは、ユーザーレコードがユーザーデータベーステーブルにまだ存在しないことを確認する方法です。ユーザーの一意のID(uid)を使用して、uidが既に保存されているかどうかをクロスチェックできますが、これをどこで行うかがわかりません。

2つのクラスと/callbackルートがあります。Userクラスはdbモデルであり、Authenticationクラスには、OAuthに接続するためのさまざまなメソッドと、Authentication.saveメソッドが呼び出される/callbackルートがあります。

Authentication.saveメソッド内の既存のレコードをチェックして、ブール値などを返す必要がありますか?Authentication.existsのような新しいメソッドをAuthenticationに作成しますか?(そしてそれはどのように見えるでしょうか?)または/コールバックルート内をチェックする必要がありますか?

これが100%明確でなかった場合は、お詫び申し上げます。問題を説明するのに苦労しており、Rubyの初心者です...

4

1 に答える 1

2

新しいユーザーを作成する直前に、同じログイン名と電子メール (たとえば) を持つユーザーが存在するかどうかを確認する必要があります。

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
于 2009-11-18T10:15:30.213 に答える