1
0
Fork 0
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:
Michael Duchemin 2019-01-27 00:23:47 -05:00
parent ea0eaced55
commit 93d2090011
No known key found for this signature in database
GPG key ID: 80DBC88807D13C3B
4 changed files with 22 additions and 0 deletions

View file

@ -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.

View file

@ -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."

View file

@ -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

View file

@ -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|