mirror of
https://github.com/github/rails.git
synced 2026-01-30 08:48:06 -05:00
Generated migrations include timestamps by default. Closes #8501.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6883 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Generated migrations include timestamps by default. #8501 [shane]
|
||||
|
||||
* Drop Action Web Service from rails:freeze:edge. [Jeremy Kemper]
|
||||
|
||||
* Add db:create, drop, reset, charset, and collation tasks. #8448 [matt]
|
||||
|
||||
@@ -5,8 +5,9 @@ Description:
|
||||
should not be suffixed with 'Model'.
|
||||
|
||||
As additional parameters, the generator will take attribute pairs described by name and type. These attributes will
|
||||
be used to prepopulate the migration to create the table for the model and give you a set of predefined fixture.
|
||||
You don't have to think up all attributes up front, but it's a good idea of adding just the baseline of what's
|
||||
be used to prepopulate the migration to create the table for the model and give you a set of predefined fixture. By
|
||||
default, created_at and updated_at timestamps are added to migration for you, so you needn't specify them by hand.
|
||||
You don't have to think up all attributes up front, but it's a good idea of adding just the baseline of what's
|
||||
needed to start really working with the resource.
|
||||
|
||||
The generator creates a model class in app/models, a test suite in test/unit, test fixtures in
|
||||
@@ -21,6 +22,6 @@ Examples:
|
||||
Fixtures: test/fixtures/accounts.yml
|
||||
Migration: db/migrate/XXX_add_accounts.rb
|
||||
|
||||
./script/generate model post title:string created_on:date body:text published:boolean
|
||||
|
||||
./script/generate model post title:string body:text published:boolean
|
||||
|
||||
Creates post model with predefined attributes.
|
||||
|
||||
@@ -4,8 +4,12 @@ one:
|
||||
<% for attribute in attributes -%>
|
||||
<%= attribute.name %>: <%= attribute.default %>
|
||||
<% end -%>
|
||||
created_at: <%= Time.now.to_s(:db) %>
|
||||
updated_at: <%= Time.now.to_s(:db) %>
|
||||
two:
|
||||
id: 2
|
||||
<% for attribute in attributes -%>
|
||||
<%= attribute.name %>: <%= attribute.default %>
|
||||
<% end -%>
|
||||
created_at: <%= Time.now.to_s(:db) %>
|
||||
updated_at: <%= Time.now.to_s(:db) %>
|
||||
|
||||
@@ -4,6 +4,7 @@ class <%= migration_name %> < ActiveRecord::Migration
|
||||
<% for attribute in attributes -%>
|
||||
t.<%= attribute.type %> :<%= attribute.name %>
|
||||
<% end -%>
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -10,8 +10,11 @@ Description:
|
||||
As additional parameters, the generator will take attribute pairs
|
||||
described by name and type. These attributes will be used to
|
||||
prepopulate the migration to create the table for the model. For
|
||||
example, "resource post title:string created_on:date body:text
|
||||
published:boolean" will give you a Post model with those four attributes.
|
||||
example, "resource post title:string body:text published:boolean" will
|
||||
give you a Post model with those three attributes.
|
||||
|
||||
By default, created_at and updated_at timestamps are added to migration
|
||||
for you, so you needn't specify them by hand.
|
||||
|
||||
You don't have to think up all attributes up front, but it's a good
|
||||
idea of adding just the baseline of what's needed to start really
|
||||
@@ -26,5 +29,5 @@ Description:
|
||||
|
||||
Examples:
|
||||
./script/generate resource post # no attributes
|
||||
./script/generate resource post title:string created_on:date body:text published:boolean
|
||||
./script/generate resource purchase order_id:integer created_at:datetime amount:decimal
|
||||
./script/generate resource post title:string body:text published:boolean
|
||||
./script/generate resource purchase order_id:integer amount:decimal
|
||||
|
||||
@@ -6,32 +6,35 @@ Description:
|
||||
(GET/POST/PUT/DELETE) and is prepared for multi-client access (like one
|
||||
view for HTML, one for an XML API, one for ATOM, etc). Everything comes
|
||||
with sample unit and functional tests as well.
|
||||
|
||||
|
||||
The generator takes the name of the model as its first argument. This
|
||||
model name is then pluralized to get the controller name. So
|
||||
"scaffold post" will generate a Post model and a
|
||||
PostsController and will be intended for URLs like /posts and
|
||||
/posts/45.
|
||||
|
||||
|
||||
As additional parameters, the generator will take attribute pairs
|
||||
described by name and type. These attributes will be used to
|
||||
prepopulate the migration to create the table for the model and to give
|
||||
you a set of templates for the view. For example, "scaffold
|
||||
post title:string created_on:date body:text published:boolean" will
|
||||
give you a model with those four attributes, forms to create and edit
|
||||
those models from, and an index that'll list them all.
|
||||
|
||||
you a set of templates for the view. For example, "scaffold post
|
||||
title:string body:text published:boolean" will give you a model with
|
||||
those three attributes, forms to create and edit those models from,
|
||||
and an index that'll list them all.
|
||||
|
||||
By default, created_at and updated_at timestamps are added to migration
|
||||
for you, so you needn't specify them by hand.
|
||||
|
||||
You don't have to think up all attributes up front, but it's a good
|
||||
idea of adding just the baseline of what's needed to start really
|
||||
working with the resource.
|
||||
|
||||
|
||||
The generator also adds a declaration to your config/routes.rb file
|
||||
to hook up the rules that'll point URLs to this new resource. If you
|
||||
to hook up the rules that'll point URLs to this new resource. If you
|
||||
create a resource like "scaffold post", it will add
|
||||
"map.resources :posts" (notice the plural form) in the routes file,
|
||||
making your new resource accessible from /posts.
|
||||
"map.resources :posts" (notice the plural form) in the routes file,
|
||||
making your new resource accessible from /posts.
|
||||
|
||||
Examples:
|
||||
./script/generate scaffold post # no attributes, view will be anemic
|
||||
./script/generate scaffold post title:string created_on:date body:text published:boolean
|
||||
./script/generate scaffold purchase order_id:integer created_at:datetime amount:decimal
|
||||
./script/generate scaffold post title:string body:text published:boolean
|
||||
./script/generate scaffold purchase order_id:integer amount:decimal
|
||||
|
||||
@@ -128,6 +128,7 @@ module GeneratorTestHelper
|
||||
# the parsed yaml tree is passed to a block.
|
||||
def assert_generated_fixtures_for(name)
|
||||
assert_generated_yaml "test/fixtures/#{name.to_s.underscore}" do |yaml|
|
||||
assert_generated_timestamps(yaml)
|
||||
yield yaml if block_given?
|
||||
end
|
||||
end
|
||||
@@ -147,7 +148,8 @@ module GeneratorTestHelper
|
||||
# It takes the name of the migration as a parameter.
|
||||
# the migration body is passed to a block.
|
||||
def assert_generated_migration(name,parent="ActiveRecord::Migration")
|
||||
assert_generated_class "db/migrate/001_#{name.to_s.underscore}",parent do |body|
|
||||
assert_generated_class "db/migrate/001_#{name.to_s.underscore}",parent do |body|
|
||||
assert body=~/timestamps/, "should have timestamps defined"
|
||||
yield body if block_given?
|
||||
end
|
||||
end
|
||||
@@ -174,4 +176,13 @@ module GeneratorTestHelper
|
||||
assert body=~/t\.#{type.to_s} :#{name.to_s}/, "should have column #{name.to_s} defined"
|
||||
end
|
||||
|
||||
private
|
||||
# asserts that the default timestamps are created in the fixture
|
||||
def assert_generated_timestamps(yaml)
|
||||
yaml.values.each do |v|
|
||||
["created_at", "updated_at"].each do |field|
|
||||
assert v.keys.include?(field), "should have #{field} field by default"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user