私は Rails 3 に取り組んでおり、koala gem を使用して Facebook グラフ API への接続を取得しています。また、omniauth を使用してユーザーを認証しています。
そのため、新しいユーザーがサイトにログインすると、session_controller が新しいユーザーを処理します。
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env['omniauth.auth'])
session[:user_id] = user.id
redirect_to root_url, notice: "Signed in!"
end
create メソッドは User.rb モデルの "from_omniauth" クラス メソッドを呼び出して、新しいユーザーを作成します。
class User < ActiveRecord::Base
has_many :friends
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.first_name = auth["info"]["first_name"]
user.last_name = auth["info"]["last_name"]
user.image = auth["info"]["image"]
user.email = auth["info"]["email"]
user.gender = auth["extra"]["raw_info"]["gender"]
user.location = auth["extra"]["raw_info"]["location"]["name"]
user.token = auth["credentials"]["token"]
end
user.save!
end
ユーザーの Facebook の友達も保存し、別のテーブルに保存したいので、この友達モデルを作成しました。
class Friend < ActiveRecord::Base
attr_accessible :name
belongs_to :user
validates :user_id, presence: true
def facebook
@Facebook ||= Koala::Facebook::API.new(token)
end
def add_friends
facebook { |fb| fb.get_connection("me", "friends") }
end
end
しかし、ユーザーの友達を保存する方法がわかりません。知りたいのですが:
- ユーザーを作成して友達に保存する方法
- add_friends メソッドはどこで呼び出す必要がありますか?
- fb.get_connection("me", "friends") は、次のようなハッシュの配列を返します
> [{"name"=>"Johan Gyllenspetz", "id"=>"3624556"}, {"name"=>"Gustaf Josefsson",
。そして、名前とuidを保存したいと思います。