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