module RailsSettings::Base
Public Class Methods
included(base)
click to toggle source
# File lib/rails-settings/base.rb, line 3 def self.included(base) base.class_eval do has_many :setting_objects, :as => :target, :autosave => true, :dependent => :delete_all, :class_name => self.setting_object_class_name def settings(var) raise ArgumentError unless var.is_a?(Symbol) raise ArgumentError.new("Unknown key: #{var}") unless self.class.default_settings[var] if RailsSettings.can_protect_attributes? setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build({ :var => var.to_s }, :without_protection => true) else setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build(:var => var.to_s, :target => self) end end def settings=(value) if value.nil? setting_objects.each(&:mark_for_destruction) else raise ArgumentError end end def settings?(var=nil) if var.nil? setting_objects.any? { |setting_object| !setting_object.marked_for_destruction? && setting_object.value.present? } else settings(var).value.present? end end def to_settings_hash settings_hash = self.class.default_settings.dup settings_hash.each do |var, vals| settings_hash[var] = settings_hash[var].merge(settings(var.to_sym).value) end settings_hash end end end
Public Instance Methods
settings(var)
click to toggle source
# File lib/rails-settings/base.rb, line 11 def settings(var) raise ArgumentError unless var.is_a?(Symbol) raise ArgumentError.new("Unknown key: #{var}") unless self.class.default_settings[var] if RailsSettings.can_protect_attributes? setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build({ :var => var.to_s }, :without_protection => true) else setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build(:var => var.to_s, :target => self) end end
settings=(value)
click to toggle source
# File lib/rails-settings/base.rb, line 22 def settings=(value) if value.nil? setting_objects.each(&:mark_for_destruction) else raise ArgumentError end end
settings?(var=nil)
click to toggle source
# File lib/rails-settings/base.rb, line 30 def settings?(var=nil) if var.nil? setting_objects.any? { |setting_object| !setting_object.marked_for_destruction? && setting_object.value.present? } else settings(var).value.present? end end
to_settings_hash()
click to toggle source
# File lib/rails-settings/base.rb, line 38 def to_settings_hash settings_hash = self.class.default_settings.dup settings_hash.each do |var, vals| settings_hash[var] = settings_hash[var].merge(settings(var.to_sym).value) end settings_hash end