Class: ActiveRecord::ConnectionAdapters::ReferenceDefinition

Inherits:
Object
  • Object
show all
Defined in:
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(name, polymorphic: false, index: true, foreign_key: false, type: :bigint, **options) ⇒ ReferenceDefinition

Returns a new instance of ReferenceDefinition.


154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 154

def initialize(
  name,
  polymorphic: false,
  index: true,
  foreign_key: false,
  type: :bigint,
  **options
)
  @name = name
  @polymorphic = polymorphic
  @index = index
  @foreign_key = foreign_key
  @type = type
  @options = options

  if polymorphic && foreign_key
    raise ArgumentError, "Cannot add a foreign key to a polymorphic relation"
  end
end

Instance Method Details

#add(table_name, connection) ⇒ Object


174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 174

def add(table_name, connection)
  columns.each do |name, type, options|
    connection.add_column(table_name, name, type, **options)
  end

  if index
    connection.add_index(table_name, column_names, **index_options(table_name))
  end

  if foreign_key
    connection.add_foreign_key(table_name, foreign_table_name, **foreign_key_options)
  end
end

#add_to(table) ⇒ Object


188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 188

def add_to(table)
  columns.each do |name, type, options|
    table.column(name, type, **options)
  end

  if index
    table.index(column_names, **index_options(table.name))
  end

  if foreign_key
    table.foreign_key(foreign_table_name, **foreign_key_options)
  end
end