Class: User

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
FriendlyId
Includes:
Applicat::Mvc::Model::Resource::Base, Extensions, Liking, Listable, Omniauthable
Defined in:
app/models/user.rb,
app/models/concerns/user/liking.rb,
app/models/concerns/user/listable.rb,
app/models/concerns/user/extensions.rb,
app/models/concerns/user/omniauthable.rb

Defined Under Namespace

Modules: Extensions, Liking, Listable, Omniauthable

Constant Summary collapse

PARENT_TYPES =
['area', 'project']

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Applicat::Mvc::Model::Resource::Base

included

Class Method Details

.by_slug_or_id(id) ⇒ Object



49
50
51
# File 'app/models/user.rb', line 49

def self.by_slug_or_id(id)
  id.to_i.to_s == id.to_s ? find(id) : friendly.find(id)
end

.languages(query = nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/models/user.rb', line 53

def self.languages(query = nil)
  options = []
  
  AVAILABLE_LANGUAGES.merge(OTHER_LANGUAGES).each do |locale, language|
    next if query && !language.downcase.match(query.downcase)
    
    if query
      options << { id: locale, name: language }
    else
      options << [language, locale]
    end
  end
  
  options
end

Instance Method Details

#area_tokensObject



97
98
99
# File 'app/models/user.rb', line 97

def area_tokens
  areas
end

#area_tokens=(tokens) ⇒ Object



93
94
95
# File 'app/models/user.rb', line 93

def area_tokens=(tokens)
  self.area_ids = Area.ids_from_tokens(tokens)
end

#best_available_nameObject



105
106
107
# File 'app/models/user.rb', line 105

def best_available_name
  lastfm_user_name || full_name
end

#email_required?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'app/models/concerns/user/omniauthable.rb', line 40

def email_required?
  super && provider.blank?
end

#foreign_language_tokensObject



81
82
83
84
85
86
87
88
89
90
91
# File 'app/models/user.rb', line 81

def foreign_language_tokens
  options = []
  
  User.languages.each do |language|
    next unless (foreign_languages  || []).include?(language.second)
      
    options << { id: language.second, name: language.first } 
  end
  
  options
end

#foreign_language_tokens=(tokens) ⇒ Object



77
78
79
# File 'app/models/user.rb', line 77

def foreign_language_tokens=(tokens)
  self.foreign_languages = tokens.split(',')
end

#full_nameObject



101
102
103
# File 'app/models/user.rb', line 101

def full_name
  [first_name, last_name].join(' ')
end

#is_master?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'app/models/user.rb', line 69

def is_master?
  roles.include? :master
end

#languagesObject



73
74
75
# File 'app/models/user.rb', line 73

def languages
  (foreign_languages || []) + [language]
end

#password_required?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/models/concerns/user/omniauthable.rb', line 36

def password_required?
  super && provider.blank?
end

#storiesObject



15
# File 'app/models/user.rb', line 15

def stories; Story.where(offeror_id: id); end

#update_with_password(params, *options) ⇒ Object



44
45
46
47
48
49
50
# File 'app/models/concerns/user/omniauthable.rb', line 44

def update_with_password(params, *options)
  if encrypted_password.blank?
    update_attributes(params, *options)
  else
    super
  end
end