Skip to content

Instantly share code, notes, and snippets.

@neiled
Created July 10, 2012 21:58
Show Gist options
  • Save neiled/3086494 to your computer and use it in GitHub Desktop.
Save neiled/3086494 to your computer and use it in GitHub Desktop.
class User
include Mongoid::Document
belongs_to :office
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
before_create :setup_office
after_invitation_accepted :change_office_to_invitor
def change_office_to_invitor
self.office = User.find(self.invited_by_id).office
self.invitation_limit = 0
self.save!
end
def setup_office
self.office = Office.create!
end
field :name
validates_presence_of :name
validates_uniqueness_of :name, :email, :case_sensitive => false
## Database authenticatable
field :email, :type => String, :default => ""
field :encrypted_password, :type => String, :default => ""
## Recoverable
field :reset_password_token, :type => String
field :reset_password_sent_at, :type => Time
## Rememberable
field :remember_created_at, :type => Time
## Trackable
field :sign_in_count, :type => Integer, :default => 0
field :current_sign_in_at, :type => Time
field :last_sign_in_at, :type => Time
field :current_sign_in_ip, :type => String
field :last_sign_in_ip, :type => String
## Invitable
field :invitation_token, type: String
field :invitation_sent_at, type: DateTime
field :invitation_accepted_at, type: DateTime
field :invitation_limit, type: Integer
field :invited_by_id, type: Integer
field :invited_by_type, type: String
## Confirmable
# field :confirmation_token, :type => String
# field :confirmed_at, :type => Time
# field :confirmation_sent_at, :type => Time
# field :unconfirmed_email, :type => String # Only if using reconfirmable
## Lockable
# field :failed_attempts, :type => Integer, :default => 0 # Only if lock strategy is :failed_attempts
# field :unlock_token, :type => String # Only if unlock strategy is :email or :both
# field :locked_at, :type => Time
## Token authenticatable
# field :authentication_token, :type => String
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment