Skip to content

Commit

Permalink
Add class option timestamps to migration generator
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
msducheminjr committed Feb 9, 2019
1 parent ea0eace commit 93d2090
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions activerecord/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module Generators # :nodoc:
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."

Expand Down
2 changes: 2 additions & 0 deletions guides/source/active_record_migrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions railties/test/generators/migration_generator_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,21 @@ def test_create_table_migration
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|
Expand Down

0 comments on commit 93d2090

Please sign in to comment.