Class: DataMapper::Adapters::Sql::Mappings::Column
- Defined in:
- lib/data_mapper/adapters/sql/mappings/column.rb
Overview
TODO: There are of course many more options to add here. Ordinal, Length/Size, Nullability are just a few.
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#options ⇒ Object
Returns the value of attribute options.
-
#type ⇒ Object
Returns the value of attribute type.
Instance Method Summary collapse
- #column_name ⇒ Object
-
#initialize(adapter, table, name, type, options = {}) ⇒ Column
constructor
A new instance of Column.
- #inspect ⇒ Object
- #instance_variable_name ⇒ Object
- #key? ⇒ Boolean
- #lazy=(value) ⇒ Object
-
#lazy? ⇒ Boolean
Determines if the field should be lazy loaded.
- #nullable? ⇒ Boolean
- #size ⇒ Object
- #to_s ⇒ Object
- #to_sql(include_table_name = false) ⇒ Object
- #to_sym ⇒ Object
Constructor Details
#initialize(adapter, table, name, type, options = {}) ⇒ Column
Returns a new instance of Column.
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 12 def initialize(adapter, table, name, type, = {}) @adapter = adapter @table = table @name, @type, @options = name.to_sym, type, (class << self; self end).class_eval <<-EOS def type_cast_value(value) @adapter.type_cast_#{type}(value) end EOS end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
10 11 12 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 10 def name @name end |
#options ⇒ Object
Returns the value of attribute options.
10 11 12 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 10 def @options end |
#type ⇒ Object
Returns the value of attribute type.
10 11 12 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 10 def type @type end |
Instance Method Details
#column_name ⇒ Object
55 56 57 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 55 def column_name @column_name || (@column_name = (@options.has_key?(:column) ? @options[:column].to_s : name.to_s.gsub(/\?$/, '')).freeze) end |
#inspect ⇒ Object
82 83 84 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 82 def inspect "#<%s:0x%x @name=%s, @type=%s, @options=%s>" % [self.class.name, (object_id * 2), to_sql, type.inspect, .inspect] end |
#instance_variable_name ⇒ Object
47 48 49 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 47 def instance_variable_name @instance_variable_name || (@instance_variable_name = "@#{@name.to_s.gsub(/\?$/, '')}".freeze) end |
#key? ⇒ Boolean
39 40 41 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 39 def key? @options[:key] || false end |
#lazy=(value) ⇒ Object
24 25 26 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 24 def lazy=(value) @options[:lazy] = value end |
#lazy? ⇒ Boolean
Determines if the field should be lazy loaded. You can set this explicitly, or accept the default, which is false for all but text fields.
31 32 33 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 31 def lazy? @options[:lazy] || (type == :text) end |
#nullable? ⇒ Boolean
35 36 37 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 35 def nullable? @options[:nullable] || true end |
#size ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 69 def size @size || begin return @size = @options[:size] if @options.has_key?(:size) return @size = @options[:length] if @options.has_key?(:length) @size = case type when :integer then 4 when :string, :class then 50 else nil end end end |
#to_s ⇒ Object
51 52 53 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 51 def to_s @name.to_s end |
#to_sql(include_table_name = false) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 59 def to_sql(include_table_name = false) if include_table_name @to_sql_with_table_name || @to_sql_with_table_name = begin (@table.to_sql + '.' + @adapter.quote_column_name(column_name)).freeze end else @to_sql || (@to_sql = @adapter.quote_column_name(column_name).freeze) end end |
#to_sym ⇒ Object
43 44 45 |
# File 'lib/data_mapper/adapters/sql/mappings/column.rb', line 43 def to_sym @name end |