我想制作一个rails模型,但我不想将它存储在数据库中

时间:2011-03-02 06:17:03

标签: ruby-on-rails ruby

我想创建一个可以处理所有与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 个答案:

答案 0 :(得分:6)

如果你没有从第一行的ActiveRecord::Base延伸,你可以得到一个简单的类,你可以使用它来保存你想要的任何逻辑。

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 :(得分:1)

另外,请查看Ryan Bates的截屏视频。他谈到了“积极的无记录”模式。

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