module SuperListActiveRecord::ClassMethods
Public Instance Methods
super_list(column, data, options={})
click to toggle source
# File lib/super_list.rb, line 82 def super_list(column, data, options={}) data = SuperList[data] options = data.options.merge(options) before_validation do value = attributes[column.to_s] keys = data.keys if !keys.include?(value) index = data.values.find_index(value) if index self.send("#{column}=", keys[index]) elsif options[:allow_blank] && value.blank? # do nothing elsif !options[:no_validation] self.errors.add(column, I18n.t('errors.messages.inclusion')) return false end end return true end define_method "#{column}" do |*opts| key = attributes[column.to_s] if opts.blank? && SuperList.options[:format].blank? key else format = opts[0].is_a?(Symbol) ? opts[0] : nil opts = opts[1].is_a?(Hash) ? opts[1] : (opts[0].is_a?(Hash) ? opts[0] : {}) data.get_value(key, format, options.merge(opts)) end end end