mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add class option timestamps to migration generator
Fixes GH#28706. Now rails g migration create_users and rails g model User have the same behavior for timestamps since they implement the same migration template. The expected behavior is that this create table migration will create the table with timestamps unless you pass --no-timestamps or --skip-timestamps to the generator. The expected migration should match what you get when you use the model generator. Using the migration generator, which doesn't have a class_option for timestamps would cause them to not be added to the migration file. Now the migration behavior of the migration generator, create_table only, is aligned with the migration behavior of the model generator. Also modified relevant example of ActiveRecord Migrations Guide.
This commit is contained in:
parent
ea0eaced55
commit
93d2090011
4 changed files with 22 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
* Allow generated create_table migrations to include or skip timestamps
|
||||
|
||||
*Michael Duchemin*
|
||||
|
||||
* Fix `relation.create` to avoid leaking scope to initialization block and callbacks.
|
||||
|
||||
Fixes #9894, #17577.
|
||||
|
|
|
@ -7,6 +7,7 @@ module ActiveRecord
|
|||
class MigrationGenerator < Base # :nodoc:
|
||||
argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
|
||||
|
||||
class_option :timestamps, type: :boolean
|
||||
class_option :primary_key_type, type: :string, desc: "The type for primary key"
|
||||
class_option :database, type: :string, aliases: %i(db), desc: "The database for your migration. By default, the current environment's primary database is used."
|
||||
|
||||
|
|
|
@ -225,6 +225,8 @@ class CreateProducts < ActiveRecord::Migration[5.0]
|
|||
create_table :products do |t|
|
||||
t.string :name
|
||||
t.string :part_number
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -245,6 +245,21 @@ class MigrationGeneratorTest < Rails::Generators::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_create_table_migration_with_timestamps
|
||||
run_generator ["create_books", "title:string", "content:text"]
|
||||
assert_migration "db/migrate/create_books.rb", /t.timestamps/
|
||||
end
|
||||
|
||||
def test_create_table_timestamps_are_skipped
|
||||
run_generator ["create_books", "title:string", "content:text", "--no-timestamps"]
|
||||
|
||||
assert_migration "db/migrate/create_books.rb" do |m|
|
||||
assert_method :change, m do |change|
|
||||
assert_no_match(/t.timestamps/, change)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_add_uuid_to_create_table_migration
|
||||
run_generator ["create_books", "--primary_key_type=uuid"]
|
||||
assert_migration "db/migrate/create_books.rb" do |content|
|
||||
|
|
Loading…
Reference in a new issue