danimashu/sudamos

View on GitHub
app/models/user.rb

Summary

Maintainability
A
0 mins
Test Coverage
class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: :slugged

  devise :database_authenticatable, :registerable, :recoverable, :rememberable,
         :trackable, :validatable, :omniauthable, omniauth_providers: [:facebook]

  attr_accessible :email, :password, :password_confirmation, :remember_me, :terms,
                  :professional, :name, :state_id, :phone, :address,
                  :company_description, :provider, :uid

  attr_accessor :terms

  validates :terms, acceptance: true
  validates :professional, inclusion: { in: [false, true] }
  validates :name, presence: true

  belongs_to :state
  has_many :adverts, dependent: :destroy
  has_many :contacts

  def self.find_for_facebook_oauth(auth)
    email     = auth.present? ? auth.info.email : nil
    user      = User.find_by_email(email)
    full_name = [auth.extra.raw_info.first_name, auth.extra.raw_info.last_name].join(" ")

    unless user.present?
      user = User.create name: full_name, provider: "facebook", uid: auth.uid,
                         email: email, password: Devise.friendly_token[0, 20]
    end
    user
  end
end