地图数据的最佳方式?

时间:2013-08-06 11:34:10

标签: ruby

我想将一些数据从facebook映射到我的User类。我现在阅读一些关于继承,扩展,包括等的文章。但也许我理解错了。 这是Ruby中DataMapping的正确方法吗?

class User
    attr_accessible :name, :address

    def map_facebook
        FacebookUserMapper.new(facebook_object, self)
    end
end


class FacebookUserMapper

    def initialize(facebook_user, user)
        @facebook_user = facebook_user
        @user = user
        mapit
    end

    def self.map_it()
        username
        address
        return @user
    end

    def username
        @user.username = @facebook_user.name
    end

    def address
        @user.address = @facebook_user.address
    end     
end

2 个答案:

答案 0 :(得分:0)

我会这样做:

def mapFacebook
  FacebookUserMapper.new(facebook_object, self).call
end

class FacebookUserMapper
  def initialize(facebook_user, user)
    @facebook_user = facebook_user
    @user = user
  end

  def call
    username
    address

    self
  end

  # ...
end

仅供参考:不要在Ruby

中添加()方法

答案 1 :(得分:0)

将facebook对象映射到用户模型的更好方法是

def self.from_omniauth(auth)
  where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
    user.provider = auth.provider
    user.uid = auth.uid
    user.name = auth.info.name
    user.oauth_token = auth.credentials.token
    user.oauth_expires_at = Time.at(auth.credentials.expires_at)
    user.save!
  end
end

auth 是这里的facebook对象。 点击只允许您对块内的对象执行某些操作,并始终让该块返回对象本身。

这是Railscasts episode的代码段,您可以从中获得更多有关Facebook相关应用的帮助。