10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/preference_fu.rb', line 10
def has_preferences(*prefs)
alias_method_chain :initialize, :preferences
class_eval do
class << self
alias_method_chain :instantiate, :preferences
attr_accessor :preference_options
end
end
options = prefs.
preference_names=prefs-options.keys
@config = { :column => 'preferences' }.merge(options)
self.preference_options = {}
prefs.each_with_index do |pref, idx|
self.preference_options[2**idx] = { :key => pref.to_sym, :default => false }
end
preference_names.each do |pref|
define_method(pref.to_sym) {self.prefs[pref.to_sym]}
define_method((pref.to_s+'?').to_sym) {send pref.to_sym}
define_method((pref.to_s+'=').to_sym) {|a| self.prefs[pref.to_sym]=a}
end
class << self
define_method(:preferences_column) { @config[:column] }
end
end
|