Class User
In: app/models/user.rb
Parent: ActiveRecord::Base

Methods

Included Modules

Authentication Authentication::ByPassword Authentication::ByCookieToken Authorization::AasmRoles

Public Class methods

[Source]

    # File app/models/user.rb, line 68
68:     def admin_ids(options = {})
69:       conditions = { 'users.state''users.state' => 'admin' }.merge(options.delete(:conditions) || {})
70:       all({:select => 'users.id', :conditions => conditions}.merge(options)).map(&:id)
71:     end

[Source]

    # File app/models/user.rb, line 63
63:     def admins(options = {})
64:       conditions = { 'users.state''users.state' => 'admin' }.merge(options.delete(:conditions) || {})
65:       all({:conditions => conditions}.merge(options))
66:     end

[Source]

    # File app/models/user.rb, line 40
40:     def authenticate(email, password)
41:       return nil if email.blank? || password.blank?
42:       u = find_in_state(:first, :active, :conditions => {:email => email}) || find_in_state(:first, :admin, :conditions => {:email => email}) # need to get the salt
43:       u && u.authenticated?(password) ? u : nil
44:     end

[Source]

    # File app/models/user.rb, line 48
48:     def page_find(page = 1)
49:       paginate(:page => page, :order => "users.created_at desc")
50:     end

[Source]

    # File app/models/user.rb, line 46
46:     def per_page; 20 end

[Source]

    # File app/models/user.rb, line 52
52:     def responses_rank(user)
53:       all(
54:         :select => 'users.id, COUNT(responses.id) AS num_responses',
55:         :joins => 'INNER JOIN visits ON visits.user_id=users.id LEFT OUTER JOIN responses ON responses.visit_id=visits.id',
56:         :group => 'users.id'
57:       ).inject({}) do |users, u|
58:         users[u.id] = u.num_responses.to_i
59:         users
60:       end.sort_by { |u| -u.last }.to_a.transpose.first.index(user.id).to_i + 1
61:     end

Public Instance methods

[Source]

    # File app/models/user.rb, line 78
78:   def email=(value)
79:     write_attribute :email, (value ? value.downcase : nil)
80:   end

[Source]

     # File app/models/user.rb, line 118
118:   def forgot_password(visit_id)
119:     self.reset!
120:     Mailing.create(
121:       :email => self.email,
122:       :visit_id => visit_id,
123:       :user_id => self.id,
124:       :name => self.email,
125:       :message => "RESET PASSWORD #{Time.now}"
126:     ).send_reset_password(self.activation_code)
127:   end

[Source]

     # File app/models/user.rb, line 107
107:   def get_item_responses_count
108:     if check_cache
109:       ids = item_ids
110:       count = ids && !ids.empty? ? Response.count(
111:         :joins => "INNER JOIN items_responses ON (items_responses.response_id=responses.id AND items_responses.item_id IN (#{ids.join(',')}))"
112:       ) : 0
113:       self.update_attribute(:items_responses_count, count)
114:     end
115:     self.items_responses_count
116:   end

[Source]

     # File app/models/user.rb, line 102
102:   def get_items_count
103:     self.update_attribute(:items_count, Item.count(:conditions => { :visit_id => visit_ids })) if check_cache
104:     self.items_count
105:   end

[Source]

     # File app/models/user.rb, line 97
 97:   def get_responses_count
 98:     self.update_attribute(:responses_count, Response.count(:conditions => { :visit_id => visit_ids })) if check_cache
 99:     self.responses_count
100:   end

[Source]

    # File app/models/user.rb, line 92
92:   def get_responses_rank
93:     self.update_attribute(:responses_rank, User.responses_rank(self)) if check_cache
94:     self.responses_rank
95:   end

[Source]

    # File app/models/user.rb, line 74
74:   def login=(value)
75:     write_attribute :login, (value ? value.downcase : nil)
76:   end

[Source]

    # File app/models/user.rb, line 82
82:   def register_voter
83:     if voter_id_ext.nil? && ext_id = Pairwise.voter({})
84:       update_attribute :voter_id_ext, ext_id.first
85:     end
86:   end

[Source]

     # File app/models/user.rb, line 129
129:   def reset_password(password)
130:     self.password = self.password_confirmation = password
131:     self.salt = self.class.make_token
132:     self.save!
133:     self.activate!
134:   end

[Source]

    # File app/models/user.rb, line 88
88:   def send_signup_email
89:     UserMailer.deliver_signup_notification(self)
90:   end

Protected Instance methods

[Source]

     # File app/models/user.rb, line 148
148:     def cache_expired?
149:       !self.cached_at || Time.now - self.cached_at > Constants::Params::EXPIRE_USER_DATA_AFTER
150:     end

[Source]

     # File app/models/user.rb, line 142
142:     def check_cache
143:       @ret ||= cache_expired?
144:       set_cache if @ret && cache_expired?
145:       @ret
146:     end

[Source]

     # File app/models/user.rb, line 137
137:     def make_activation_code
138:       self.deleted_at = nil
139:       self.activation_code = self.class.make_token
140:     end

[Source]

     # File app/models/user.rb, line 152
152:     def set_cache
153:       self.update_attribute(:cached_at, Time.now)
154:     end

[Validate]