rails generate model/resource/scaffold的区别
If you’re just learning Ruby on Rails, you may be confused as to when to generate individual models, resources or scaffolding, and what files are created by each command.
Say you want to generate a Test model with a name. You could either generate the model individually, generate resources, or generate scaffolding, as follows:
rails g model Test name:text
rails g resource Test name:text
rails g scaffold Test name:text
What’s the difference between each of the above?
EnteringrailsgmodelTestname:textin your command line will generate the following:
(1) A model filetest.rbin yourmodelsdirectory:
class Test < ActiveRecord::Base end
(2) A migration filetimestamp_create_tests.rbin yourdb/migratedirectory:
class CreateTests < ActiveRecord::Migration def change create_table :tests do |t| t.text :name t.timestamps end end end
EnteringrailsgresourceTestname:textin your command line will generate the following:
(1) A model filetest.rbin yourmodelsdirectory:
class Test < ActiveRecord::Base end
(2) A migration filetimestamp_create_tests.rbin yourdb/migratedirectory:
class CreateTests < ActiveRecord::Migration def change create_table :tests do |t| t.text :name t.timestamps end end end
(3) atests_controller.rbfile in yourcontrollersdirectory. This controller will be an empty shell:
class TestsController < ApplicationController end
(4)resources:testsroutes in yourroutes.rbfile.
EnteringrailsgscaffoldTestname:textin your command line will generate the following:
(1) A model filetest.rbin yourmodelsdirectory:
class Test < ActiveRecord::Base end
(2) A migration filetimestamp_create_tests.rbin yourdb/migratedirectory:
class CreateTests < ActiveRecord::Migration def change create_table :tests do |t| t.text :name t.timestamps end end end
(3) Atests_controller.rbfile in yourcontrollersdirectory. When a scaffold is generated, seven public methods and two private methods will be added to your controller:
(4)resources:testsroutes in yourroutes.rbfile.
(5) Seven corresponding view files in yourviewsdirectory: (a)_form.html.erb, (b)edit.html.erb, (c)index.html.erb, (d)index.json.jbuilder, (e)new.html.erb, (f)show.html.erband (g)show.json.jbuilder. Each view will contain html and embedded ruby.
优质内容筛选与推荐>>