Class: Setting
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Setting
- Includes:
- Localized
- Defined in:
- app/models/setting.rb
Defined Under Namespace
Classes: SettingNotFound
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.global(key, opts = {}) ⇒ Object
eg. Setting.global(“site-name”)
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/models/setting.rb', line 52 def self.global(key, opts = {}) key = key.to_s autocreate = opts.delete(:autocreate) kind = opts.delete(:kind) || :string default = opts.delete(:default) group = (opts.delete(:group) || "global").to_s = opts.delete(:options) locale = opts.delete(:locale).try(:to_s) query = where(:key => key, :group => group, :settable_id => nil) if locale query = query.where(:locale => locale) end setting = query.first || ( autocreate && create( :key => key, :locale => locale, :kind => kind, :"#{kind}_value" => default, :group => group, :options => ) ) raise SettingNotFound.new("Setting `#{[group, key].join('/')}` not found for locale `#{locale || 'any'}`") if !setting setting.value || default end |
.kinds ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/models/setting.rb', line 27 def self.kinds [ :string, :integer, :float, :boolean, :text, :datetime, :date, :file ] end |
.update_global(key, value) ⇒ Object
82 83 84 85 86 87 88 |
# File 'app/models/setting.rb', line 82 def self.update_global(key, value) s = self.find_by_key_and_settable_id(key.to_s, nil) if s s.update_attributes(:value => value) end end |
Instance Method Details
#value ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'app/models/setting.rb', line 39 def value setting_kind = self.kind # this will break paperclip 'missing.png' feature, but at least # provides a way to check if an attachment is missing if setting_kind == "file" return nil if !file_value? end self.send("#{setting_kind}_value") end |