Module: UserPrefs::ClassMethods

Defined in:
lib/user_prefs/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#preference(name = nil, opts = {}) ⇒ Object



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

def preference(name = nil, opts = {})
  validate_name(name)

  defined_prefs << name
  default_prefs[name.to_s] ||= opts[:default]

  define_method("#{name}_pref") do
    prefs_attr[name] || opts[:default]
  end

  define_method("#{name}_pref=") do |new_value|
    self.prefs_attr = prefs_attr.merge(Hash[name, new_value])
  end

  define_method("#{name}_pref?") do
    prefs_attr.key?(name)
  end
end