Ich schreibe eine App mit einer DB in. Ich benutze MongoId. es ist nur eine Datenbank mit nur einem Eintrag. Ich spare ein Token in dieser DatenbankMongoid Access Problem
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
der Prozess das Token über new_token
zu bekommen funktioniert gut. Mein Problem ist, dass ich einen Absturz beim TokenDb.where habe. die Gegenwart erzeugt den Absturz.
ist die TokenDB Klasse wie unten definiert:
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
Was ich versuche, ist die Überprüfung zu tun, wenn die Datenbank tokenDb
einen Eintrag namens Token haben und die Daten abrufen, wenn nicht, erzeuge ich einen neuen Schlüssel
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'
das Problem geschah in der TokenDb.where ... line
Jede Idee?
Welche Fehler werden Sie bekommen? Sind sie auf der Client-Seite oder Server-Seite oder beides? –