Class: SerialPreference::PreferenceDefinition
- Inherits:
-
Object
- Object
- SerialPreference::PreferenceDefinition
- Defined in:
- lib/serial_preference/preference_definition.rb
Constant Summary collapse
- SUPPORTED_TYPES =
[:string,:integer,:decimal,:float,:boolean]
Instance Attribute Summary collapse
-
#data_type ⇒ Object
Returns the value of attribute data_type.
-
#default ⇒ Object
Returns the value of attribute default.
-
#field_type ⇒ Object
Returns the value of attribute field_type.
-
#name ⇒ Object
Returns the value of attribute name.
-
#required ⇒ Object
Returns the value of attribute required.
Instance Method Summary collapse
- #boolean? ⇒ Boolean
- #column_type(type) ⇒ Object
- #default_value ⇒ Object
-
#initialize(name, *args) ⇒ PreferenceDefinition
constructor
A new instance of PreferenceDefinition.
- #numerical? ⇒ Boolean
- #query(value) ⇒ Object
- #rails_42? ⇒ Boolean
- #required? ⇒ Boolean
- #type_cast(value) ⇒ Object
- #value(v) ⇒ Object
Constructor Details
#initialize(name, *args) ⇒ PreferenceDefinition
Returns a new instance of PreferenceDefinition.
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/serial_preference/preference_definition.rb', line 8 def initialize(name,*args) opts = args. self.name = name.to_s opts.assert_valid_keys(:data_type,:default,:required,:field_type) self.data_type = @type = opts[:data_type] || :string @column = ActiveRecord::ConnectionAdapters::Column.new(name.to_s, opts[:default], column_type(@type)) self.default = opts[:default] self.required = !!opts[:required] self.field_type = opts[:field_type] end |
Instance Attribute Details
#data_type ⇒ Object
Returns the value of attribute data_type.
6 7 8 |
# File 'lib/serial_preference/preference_definition.rb', line 6 def data_type @data_type end |
#default ⇒ Object
Returns the value of attribute default.
6 7 8 |
# File 'lib/serial_preference/preference_definition.rb', line 6 def default @default end |
#field_type ⇒ Object
Returns the value of attribute field_type.
6 7 8 |
# File 'lib/serial_preference/preference_definition.rb', line 6 def field_type @field_type end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/serial_preference/preference_definition.rb', line 6 def name @name end |
#required ⇒ Object
Returns the value of attribute required.
6 7 8 |
# File 'lib/serial_preference/preference_definition.rb', line 6 def required @required end |
Instance Method Details
#boolean? ⇒ Boolean
35 36 37 |
# File 'lib/serial_preference/preference_definition.rb', line 35 def boolean? @column.type == :boolean end |
#column_type(type) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/serial_preference/preference_definition.rb', line 82 def column_type(type) if rails_42? case type when :boolean ActiveRecord::Type::Boolean.new when :integer ActiveRecord::Type::Integer.new when :float ActiveRecord::Type::Float.new when :decimal ActiveRecord::Type::Decimal.new else ActiveRecord::Type::String.new end else type.to_s end end |
#default_value ⇒ Object
23 24 25 |
# File 'lib/serial_preference/preference_definition.rb', line 23 def default_value @column.default end |
#numerical? ⇒ Boolean
31 32 33 |
# File 'lib/serial_preference/preference_definition.rb', line 31 def numerical? @column.number? end |
#query(value) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/serial_preference/preference_definition.rb', line 48 def query(value) if !(value = type_cast(value)) false elsif numerical? !value.zero? else !value.blank? end end |
#rails_42? ⇒ Boolean
101 102 103 |
# File 'lib/serial_preference/preference_definition.rb', line 101 def rails_42? ActiveRecord::VERSION::MAJOR >= 4 && ActiveRecord::VERSION::MINOR == 2 end |
#required? ⇒ Boolean
27 28 29 |
# File 'lib/serial_preference/preference_definition.rb', line 27 def required? required end |
#type_cast(value) ⇒ Object
39 40 41 42 |
# File 'lib/serial_preference/preference_definition.rb', line 39 def type_cast(value) v = @column.type_cast(value) v.nil? ? default_value : v end |
#value(v) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/serial_preference/preference_definition.rb', line 58 def value(v) v = v.nil? ? default : v if !v.nil? case data_type when :string, :password v.to_s when :integer v.respond_to?(:to_i) ? v.to_i : nil when :float, :real v.respond_to?(:to_f) ? v.to_f : nil when :boolean return false if v == 0 return false if v == "" return false if v == nil return false if v.to_s.downcase == "false" return false if v == "0" return false if v.to_s.downcase == "no" !!v else nil end end end |