Sha256: 6a7aff544d437a2d54e46edafbcdb1094c64e2d7ce626a1ae09388bfd73c8646
Contents?: true
Size: 1.51 KB
Versions: 9
Compression:
Stored size: 1.51 KB
Contents
# Most of this code is from the preferences plugin available at # http://github.com/pluginaweek/preferences/tree/master # module Spree # Adds support for defining preferences on ActiveRecord models. module Preferences # Represents the definition of a preference for a particular model class PreferenceDefinition def initialize(name, *args) #:nodoc: options = args.extract_options! options.assert_valid_keys(:default) @type = args.first ? args.first.to_s : 'boolean' # Create a column that will be responsible for typecasting @column = ActiveRecord::ConnectionAdapters::Column.new(name.to_s, options[:default], @type == 'any' ? nil : @type) end # The attribute which is being preferenced def name @column.name end # The default value to use for the preference in case none have been # previously defined def default_value @column.default end # Typecasts the value based on the type of preference that was defined def type_cast(value) if @type == 'any' value else @column.type_cast(value) end end # Typecasts the value to true/false depending on the type of preference def query(value) unless value = type_cast(value) false else if @column.number? !value.zero? else !value.blank? end end end end end end
Version data entries
9 entries across 9 versions & 1 rubygems