class Preferences::PreferenceDefinition

Represents the definition of a preference for a particular model

Attributes

type[R]

The data type for the content stored in this preference type

Public Instance Methods

default_value(group = nil) click to toggle source

The default value to use for the preference in case none have been previously defined

   # File lib/preferences/preference_definition.rb
38 def default_value(group = nil)
39   @group_defaults.include?(group) ? @group_defaults[group] : type_cast(@column.default)
40 end
name() click to toggle source

The name of the preference

   # File lib/preferences/preference_definition.rb
32 def name
33   @column.name
34 end
number?() click to toggle source

Determines whether column backing this preference stores numberic values

   # File lib/preferences/preference_definition.rb
43 def number?
44   @column.type == :integer || @column.type == :float
45 end
query(value) click to toggle source

Typecasts the value to true/false depending on the type of preference

   # File lib/preferences/preference_definition.rb
63 def query(value)
64   if !(value = type_cast(value))
65     false
66   elsif number?
67     !value.zero?
68   else
69     !value.blank?
70   end
71 end
type_cast(value) click to toggle source

Typecasts the value based on the type of preference that was defined. This uses ActiveRecord's typecast functionality so the same rules for typecasting a model's columns apply here.

   # File lib/preferences/preference_definition.rb
50 def type_cast(value)
51   return 1      if @type == :integer && value == true
52   return 0      if @type == :integer && value == false
53   return true   if @type == :boolean && (value == 't' || value == true)
54   return false  if @type == :boolean && (value == 'f' || value == false)
55   if @type == :any
56     value
57   else
58     @klass.respond_to?(:deserialize) ? @klass.deserialize(value) : @column.type_cast_from_database(value)
59   end
60 end