Sha256: 7a1c4fc41a3578a9987c4e011ef3333baa74b43b93d17fd6100dd5ff4ccebef9
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 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 defined?(ProtectedAttributes) 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ledermann-rails-settings-2.4.1 | lib/rails-settings/base.rb |
ledermann-rails-settings-2.4.0 | lib/rails-settings/base.rb |