Sha256: b75a8542da3b8dc5647584e04cef55a51288fbf2eaa5d1d52dcb1628d01e96db
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
module RailsSettings module Base 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ledermann-rails-settings-2.5.0 | lib/rails-settings/base.rb |
ledermann-rails-settings-2.4.3 | lib/rails-settings/base.rb |
ledermann-rails-settings-2.4.2 | lib/rails-settings/base.rb |