2011-03-02 4 views
1

Je veux créer un objet qui gérera tous les problèmes liés à Facebook. Par exemple, je veux dire object.is_access_token_valid? ou object.get_user_email ou object.authenticate_user. Il y a beaucoup de fonctionnalités complexes que je veux emballer dans cet objet et je veux abstraire cela de l'utilisateur de l'objet. En Java, ce serait un objet. Qu'est-ce que ce serait dans ruby ​​/ rails?Je veux faire un modèle de rails mais je ne veux pas le stocker dans la base de données

Voilà ma situation spécifique:

Je reçois cette erreur: ActiveRecord :: StatementInvalid: Impossible de trouver la table

Voici mon code:

class FacebookSession < ActiveRecord::Base 

#include OauthHelper 

    attr_accessor :fb_token, :fb_client, :fb_user_id, :fb_email 

    def initialize 
    @fb_client = client # makes new oauth client 
    @fb_token = OAuth2::AccessToken.new client, fb_token 
    end 

    def get_email 
    self.fb_token.get('/me/interests') 
    end 

    def get_fb_user_id 
    self.fb_token.get('/me/interests') 
    end 

    def authenticate 
    #if this fb_user_id is in the database, log them in otherwise don't 
    end 

    def is_valid? 
    if(try_access_token(self.access_token)) 
     return true 
    else 
     return false 
    end 
    end 

end 

Répondre

6

Si vous ne prolonge pas De ActiveRecord::Base sur la première ligne, vous pouvez obtenir une classe plain-jane, que vous pouvez utiliser pour contenir toute la logique que vous voulez.

class FacebookSession 
    attr_accessor :fb_token, :fb_client, :fb_user_id, :fb_email 

    def initialize(client, fb_token) 
    @fb_client = client # makes new oauth client 
    @fb_token = OAuth2::AccessToken.new client, fb_token 
    end 

    def get_interests 
    @fb_token.get('/me/interests') 
    end 

    # etc  
end 

# somewhere else 

session = FacebookSession.new(client, token) 
email = session.get_interests 
+0

Parfait. C'est évident quand vous reculez d'une seconde! Je vous remercie! – user531065

Questions connexes