我想将一些数据从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
答案 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相关应用的帮助。