Я хочу сделать модель рельсов, но не хочу хранить ее в базе данных - PullRequest
1 голос
/ 02 марта 2011

Я хочу создать объект, который будет обрабатывать все проблемы, связанные с Facebook.Например, я хочу сказать object.is_access_token_valid?или object.get_user_email или object.authenticate_user.Существует много сложных функций, которые я хочу упаковать в этот один объект, и я хочу абстрагироваться от пользователя объекта.В Java это будет объект.Что бы это было в ruby ​​/ rails?

Вот моя конкретная ситуация:

Я получаю эту ошибку: ActiveRecord :: StatementInvalid: Не удалось найти таблицу

Вот мойкод:

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

Ответы [ 2 ]

6 голосов
/ 02 марта 2011

Если вы не продолжите от ActiveRecord::Base в первой строке, вы можете получить класс plain-jane, который вы можете использовать для хранения любой логики.

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
1 голос
/ 02 марта 2011

Кроме того, посмотрите эту скринкаст от Райана Бейтса. Он говорит о «активных бездисковых» моделях.

http://railscasts.com/episodes/121-non-active-record-model

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...