Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 1st, 2012  |  syntax: None  |  size: 0.97 KB  |  hits: 19  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. module Uclass
  2.   module Settings
  3.    
  4.     def self.included(klass)
  5.       klass.class_eval do
  6.         extend ModelClassMethods
  7.        
  8.         has_many :settings, :as => :resource
  9.        
  10.         def has_setting?(key)
  11.           !setting(key).nil?
  12.         end
  13.  
  14.         def setting(key)
  15.           settings.where(:key => key.to_s).first.value rescue nil
  16.         end
  17.        
  18.         def method_missing(method_id, *arguments, &block)
  19.           if method_id != :id
  20.             setting(method_id) || super
  21.           else
  22.             super
  23.           end
  24.         end
  25.       end
  26.     end
  27.    
  28.     module ModelClassMethods
  29.      
  30.       def update_settings!
  31.         setting_keys = first.settings.collect(&:key)
  32.         (name.constantize::SETTINGS.keys - setting_keys).each do |new_key|
  33.           all.each {|object| object.settings.create(:key => new_key, :value => name.constantize::SETTINGS[new_key][:default])}
  34.         end
  35.       end
  36.      
  37.     end
  38.    
  39.   end
  40. end