Class: ActiveRecord::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/arsettings/activerecord.rb

Class Method Summary collapse

Class Method Details

.has_setting(name, options = Hash.new, &block) ⇒ Object

Raises:

  • (NoDefaultPackageError)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/arsettings/activerecord.rb', line 3

def self.has_setting( name , options=Hash.new , &block)
  raise NoDefaultPackageError.new("No default settings class is set (make sure you have already invoked create_settings_class)") unless ARSettings.default_class
  ARSettings.validate_options options , :default , :volatile , :instance
  package         =  ARSettings.default_class.package(self)
  getter          =  name
  setter          =  "#{name}="
  boolean_getter  =  "#{name}?"
  (class << self ; self ; end).instance_eval do
    define_method getter          do       package.send getter          end
    define_method boolean_getter  do       package.send boolean_getter  end
    define_method setter          do |arg| package.send setter , arg    end
  end
  if options.delete :instance
    define_method getter          do       package.send getter          end
    define_method boolean_getter  do       package.send boolean_getter  end
    define_method setter          do |arg| package.send setter , arg    end
  end
  package.add name , options , &block
end