Class: RuboCop::Cop::Migration::StandaloneAddReference
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Migration::StandaloneAddReference
- Defined in:
- lib/rubocop/cop/migration/standalone_add_reference.rb
Overview
Prevent using add_reference and remove_reference outside of
a change_table block. add_reference create multiples ALTER TABLE
statements. Using change_table with bulk: true is more efficient.
bad
add_reference :products, :user, foreign_key: true
good
change_table :products, bulk: true do |t| t.bigint :user_id, null: false t.index :user_id t.foreign_key :users, column: :user_id end
Constant Summary collapse
- MSG =
'Modifying references must be done in a change_table block.'- RESTRICT_ON_SEND =
%i[add_reference add_belongs_to remove_reference remove_belongs_to].freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
24 25 26 27 28 |
# File 'lib/rubocop/cop/migration/standalone_add_reference.rb', line 24 def on_send(node) reference_method = node.source_range.with(end_pos: node.child_nodes.first.source_range.begin_pos - 1) add_offense(reference_method) end |