
A small gem for copying OmniAuth information into models
Usage
class FacebookProfile
include CopiesOmniauth
attr_accessor :email
attr_accessor :first_name
attr_accessor :last_name
attr_accessor :token
attr_accessor :uid
copies_omniauth :attributes => { :email => %w(info email),
:first_name => %w(info first_name),
:last_name => %w(info last_name)
}
end
f = FacebookProfile.new_from_omniauth(omniauth)
Arguments
The copies_omniauth method takes a hash with two keys :options and :attributes
Options
:overwriteAlways overwrite information (default: true):secret_attributeThe attribute on the class used to store OmniAuth's secret (default: :secret):skip_provider_checkDo not verify the OmniAuth provider matches the model (default: false):token_attributeThe attribute on the class used to store OmniAuth's token (default: :token):uid_attributeThe attribute on an instance used to store OmniAuth's uid (default: :uid):provider_nameCopiesOmniauth will guess the expected OmniAuth provider from the class name by chopping "Provider" off the end of the name. To override this behavior, set the:provider_nameoption.
Attributes
Copies OmniAuth always copies secret, token, and uid if setters are present on the model.
The :attributes parameter tells CopiesOmniauth which attributes to set on an instance and how to find their values in the OmniAuth hash. Keys of the parameter represent instance attributes and their values represent a path in the OmniAuth hash. Given the following OmniAuth hash:
{ "provider" => "twitter",
"uid" => "10223402",
"info" => { "name" => "Dean Brundage",
"email" => "[email protected]",
"nickname" => "brundage",
"urls" => [ "blog" => "http://blog.deanbrundage.com" ]
....
}
"credentials" => { "token" => "....",
"secret" => "....",
....
}
}
And given a model:
class TwitterProfile
attr_accessor :real_name
end
To copy the "name" attribute into your model's "real_name" attribute:
copies_omniauth :attributes => { :real_name => ["info", "name"] }
This traverses the OmniAuth hash, sending info, then name and stores the value in the model's real_name attribute
Methods
Class Methods
copies_omniauth Configuration macro
new_from_omniauth(omniauth_hash) Calls new, then copy_from_omniauth(omniauth_hash)
create_from_omniauth(omniauth_hash) Calls new_from_omniauth(omniauth_hash) then save -- useful for ActiveRecord models
Instance Methods
copy_from_omniauth(omniauth_hash) Copies values from omniauth_hash into the instance