user.rb
932 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class User
PER_PAGE = 30
include Mongoid::Document
include Mongoid::Timestamps
devise :database_authenticatable,
:recoverable, :rememberable, :trackable,
:validatable, :token_authenticatable
field :email
field :name
field :admin, :type => Boolean, :default => false
field :per_page, :type => Fixnum, :default => PER_PAGE
after_destroy :destroy_watchers
before_save :ensure_authentication_token
validates_presence_of :name
attr_protected :admin
has_many :apps, :foreign_key => 'watchers.user_id'
if Errbit::Config.user_has_username
field :username
validates_presence_of :username
end
def watchers
apps.map(&:watchers).flatten.select {|w| w.user_id.to_s == id.to_s}
end
def per_page
self[:per_page] || PER_PAGE
end
def watching?(app)
apps.all.include?(app)
end
protected
def destroy_watchers
watchers.each(&:destroy)
end
end