Class: DataMapper::Mappings::Table
- Inherits:
-
Object
- Object
- DataMapper::Mappings::Table
- Defined in:
- lib/data_mapper/mappings/table.rb
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
Instance Method Summary collapse
- #[](column_name) ⇒ Object
- #add_column(column_name, type, options) ⇒ Object
- #columns ⇒ Object
- #default_foreign_key ⇒ Object
- #find_by_column_name(column_name) ⇒ Object
-
#initialize(database, klass) ⇒ Table
constructor
A new instance of Table.
- #inspect ⇒ Object
- #key ⇒ Object
- #name ⇒ Object
- #name=(value) ⇒ Object
- #to_sql ⇒ Object
Constructor Details
#initialize(database, klass) ⇒ Table
Returns a new instance of Table.
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/data_mapper/mappings/table.rb', line 10 def initialize(database, klass) unless database.kind_of?(DataMapper::Database) && klass.kind_of?(Class) raise "Database and klass are required: #{ { :database => database, :klass => klass }.inspect }" end @database = database @klass = klass @columns = [] @columns_hash = Hash.new { |h,k| h[k] = @columns.find { |c| c.name == k } } @columns_by_column_name = Hash.new { |h,k| h[k.to_s] = @columns.find { |c| c.column_name == k.to_s } } end |
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
8 9 10 |
# File 'lib/data_mapper/mappings/table.rb', line 8 def klass @klass end |
Instance Method Details
#[](column_name) ⇒ Object
54 55 56 57 |
# File 'lib/data_mapper/mappings/table.rb', line 54 def [](column_name) return key if column_name == :id @columns_hash[column_name.kind_of?(Symbol) ? column_name : column_name.to_sym] end |
#add_column(column_name, type, options) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/data_mapper/mappings/table.rb', line 42 def add_column(column_name, type, ) column = @columns.find { |c| c.name == column_name.to_sym } if column.nil? reset_derived_columns! column = Column.new(@database, column_name, type, ) @columns << column end return column end |
#columns ⇒ Object
22 23 24 25 |
# File 'lib/data_mapper/mappings/table.rb', line 22 def columns key if @key.nil? @columns end |
#default_foreign_key ⇒ Object
77 78 79 |
# File 'lib/data_mapper/mappings/table.rb', line 77 def default_foreign_key @default_foreign_key || (@default_foreign_key = "#{Inflector.underscore(Inflector.singularize(name))}_id".freeze) end |
#find_by_column_name(column_name) ⇒ Object
59 60 61 |
# File 'lib/data_mapper/mappings/table.rb', line 59 def find_by_column_name(column_name) @columns_by_column_name[column_name.kind_of?(String) ? column_name : column_name.to_s] end |
#inspect ⇒ Object
85 86 87 |
# File 'lib/data_mapper/mappings/table.rb', line 85 def inspect "#<%s:0x%x @klass=%s, @name=%s, @columns=%s>" % [self.class.name, (object_id * 2), @klass.name, to_sql, @columns.inspect] end |
#key ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/data_mapper/mappings/table.rb', line 27 def key if @key.nil? key_column = @columns.find { |c| c.key? } @key = if key_column.nil? add_column(:id, :integer, :key => true) @klass.send(:attr_reader, :id) unless @klass.methods.include?(:id) @columns.last else key_column end end @key end |
#name ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/data_mapper/mappings/table.rb', line 63 def name @name || begin @name = if @klass.superclass != DataMapper::Base @database[@klass.superclass].name else Inflector.tableize(@klass.name) end.freeze end end |
#name=(value) ⇒ Object
73 74 75 |
# File 'lib/data_mapper/mappings/table.rb', line 73 def name=(value) @name = value end |
#to_sql ⇒ Object
81 82 83 |
# File 'lib/data_mapper/mappings/table.rb', line 81 def to_sql @to_sql || (@to_sql = @database.quote_table_name(name).freeze) end |