Module: PreferenceFu::ClassMethods
- Defined in:
- lib/preference_fu.rb
Instance Method Summary collapse
- #has_preferences(*prefs) ⇒ Object
- #instantiate_with_preferences(*args) ⇒ Object
- #set_default_preference(key, default) ⇒ Object
Instance Method Details
#has_preferences(*prefs) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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 = prefs. @config = { :column => 'preferences' }.merge() self. = {} prefs.each_with_index do |pref, idx| self.[2**idx] = { :key => pref.to_sym, :default => false } end class << self define_method(:preferences_column) { @config[:column] } end end |
#instantiate_with_preferences(*args) ⇒ Object
42 43 44 45 46 |
# File 'lib/preference_fu.rb', line 42 def instantiate_with_preferences(*args) record = instantiate_without_preferences(*args) record.prefs record end |
#set_default_preference(key, default) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/preference_fu.rb', line 34 def set_default_preference(key, default) raise ArgumentError.new("Default value must be boolean") unless [true, false].include?(default) idx = .find { |idx, hsh| hsh[:key] == key.to_sym }.first rescue nil if idx [idx][:default] = default end end |