mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Configurable generation of add_index for references columns
Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
This commit is contained in:
parent
5b42e96602
commit
4e39072017
3 changed files with 44 additions and 0 deletions
|
@ -10,6 +10,7 @@ module ActiveRecord
|
|||
class_option :migration, :type => :boolean
|
||||
class_option :timestamps, :type => :boolean
|
||||
class_option :parent, :type => :string, :desc => "The parent class for the generated model"
|
||||
class_option :indexes, :type => :boolean, :default => true, :desc => "Add indexes for references and belongs_to columns"
|
||||
|
||||
def create_migration_file
|
||||
return unless options[:migration] && options[:parent].nil?
|
||||
|
|
|
@ -9,8 +9,10 @@ class <%= migration_class_name %> < ActiveRecord::Migration
|
|||
<% end -%>
|
||||
end
|
||||
|
||||
<% if options[:indexes] %>
|
||||
<% attributes.select {|attr| attr.reference? }.each do |attribute| -%>
|
||||
add_index :<%= table_name %>, :<%= attribute.name %>_id
|
||||
<% end -%>
|
||||
<% end %>
|
||||
end
|
||||
end
|
||||
|
|
|
@ -203,4 +203,45 @@ class ModelGeneratorTest < Rails::Generators::TestCase
|
|||
content = capture(:stderr){ run_generator ["object"] }
|
||||
assert_match /The name 'Object' is either already used in your application or reserved/, content
|
||||
end
|
||||
|
||||
def test_index_is_added_for_belongs_to_association
|
||||
run_generator ["account", "supplier:belongs_to"]
|
||||
|
||||
assert_migration "db/migrate/create_accounts.rb" do |m|
|
||||
assert_method :change, m do |up|
|
||||
assert_match /add_index/, up
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_is_added_for_references_association
|
||||
run_generator ["account", "supplier:references"]
|
||||
|
||||
assert_migration "db/migrate/create_accounts.rb" do |m|
|
||||
assert_method :change, m do |up|
|
||||
assert_match /add_index/, up
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_is_skipped_for_belongs_to_association
|
||||
run_generator ["account", "supplier:belongs_to", "--no-indexes"]
|
||||
|
||||
assert_migration "db/migrate/create_accounts.rb" do |m|
|
||||
assert_method :change, m do |up|
|
||||
assert_no_match /add_index/, up
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_is_skipped_for_references_association
|
||||
run_generator ["account", "supplier:references", "--no-indexes"]
|
||||
|
||||
assert_migration "db/migrate/create_accounts.rb" do |m|
|
||||
assert_method :change, m do |up|
|
||||
assert_no_match /add_index/, up
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue