0
私は内部にDBを持つアプリを書いています。私はMongoIdを使用しています。 1つのエントリだけを持つ1つのデータベースです。私はnew_token
を通じてトークンを取得するためにMongoidアクセスの問題
api.rb
def get_wink_token
retrieve_token.present? ? retrieve_token : new_token
end
def new_token
RestClient.get "#{ENV['DOMAIN']}/oauth2/authorize?response_type=code&client_id=#{ENV['CLIENT_ID']}&redirect_uri=#{ENV['REDIRECT_URI']}"
token_credentials = RestClient.post "#{ENV['DOMAIN']}/oauth2/token", credentials, headers
access_token = JSON.parse(token_credentials)['data']['access_token']
TokenDb.any_in(:name => 'Token').destroy_all
TokenDb.create(name:'Token', token:access_token)
access_token
end
def retrieve_token
TokenDb.where(:name => 'Token').present? ? TokenDb.where(:name => 'Token').first[:token] : nil
end
プロセスが正常に動作しているこのデータベースにトークンを保存しています。私の問題は、TokenDb.whereを実行するときにクラッシュすることです。現在はクラッシュを発生させる。
TokenDBクラスは以下のように定義されます。データベースtokenDb
はトークンと呼ばれるエントリを持っており、データを取得し、そうでない場合は、私は新しいキー
class TokenDb
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Attributes::Dynamic
field :name, type:String
field :token, type:String
validates_presence_of :name, :token
end
をチェックしています問題はTokenDb.whereで起こっ
2017-03-13 23:18:08 - NoMethodError - undefined method `each' for nil /Users/sebastien/.rvm/gems/ruby-2.3.1/gems/activesupport-5.0.1/lib/active_support/core_ext/object/blank.rb:22:in `present?'
/Users/sebastien/smarthome/models/credentials.rb:23:in `retrieve_token'
...ライン
任意のアイデア?
あなたはどのようなエラーが発生していますか?彼らはクライアント側かサーバー側、あるいはその両方にいるのでしょうか? –