app/models/menu_option.rb in e9_attributes-0.0.2 vs app/models/menu_option.rb in e9_attributes-0.0.3
- old
+ new
@@ -1,36 +1,33 @@
# A simple class to manage menu options, usable by other classes to build their menus.
#
class MenuOption < ActiveRecord::Base
- class_inheritable_accessor :keys
+ cattr_writer :keys
- def self.initialize_keys!(*keys)
- return self.keys unless self.keys.nil?
-
- keys.flatten!
- keys.map!(&:to_s)
-
- self.keys = keys
- validates :key, :presence => true, :inclusion => { :in => keys, :allow_blank => true }
+ def self.keys
+ @@keys || []
end
validates :value, :presence => true
+ validate { errors.add(:key, :inclusion) if key.present? && !keys.include?(key) }
acts_as_list :scope => 'menu_options.key = \"#{key}\"'
scope :options_for, lambda {|key| where(:key => key).order('menu_options.position ASC') }
+ delegate :keys, :to => 'self.class'
+
##
# A direct SQL selection of values for a given key
#
# MenuOption.fetch('Email') #=> ['Personal','Work']
#
# === Parameters
#
# [key (String)] The key for the assocated menu options.
#
def self.fetch_values(key)
- connection.send(:select_values, options_for(key).order(:position).project('value').to_sql, 'Menu Option Select')
+ connection.send(:select_values, options_for(key).select('value').order(:position).to_sql, 'Menu Option Select')
end
def to_s
value
end