How to run `rails generate scaffold` when the model already exists?
我是Rails的新手,所以我目前的项目处于一种奇怪的状态。
我生成的第一件事是"电影"模型。 然后我开始更详细地定义它,添加了一些方法等。
我现在意识到我应该用
我试图生成脚手架,但我收到一个错误,说已存在同名的迁移文件。
现在为我的"电影"创建脚手架的最佳方式是什么? (使用导轨3)
TL; DR:
即使您已有模型,仍可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Rails: controller generator helper integration_test mailer migration model observer performance_test plugin resource scaffold scaffold_controller session_migration stylesheets |
如果您想为模型生成控制器支架,请参阅
Stubs out a scaffolded controller and its views. Pass the model name,
either CamelCased or under_scored, and a list of views as arguments.
The controller name is retrieved as a pluralized version of the model
name.To create a controller within a module, specify the model name as a
path like 'parent_module/controller_name'.This generates a controller class in app/controllers and invokes helper,
template engine and test framework generators.
要创建资源,你需要使用
我建议花些时间查看生成器内部的选项。他们是我认为在书籍等方面记录得非常好的东西,但它们非常方便。
1 | rails g scaffold_controller User |
对于那些使用现有数据库启动rails应用程序的人来说,有一个很酷的gem,叫做
它输出:
rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
从您的
这个命令可以做到这一点:
1 | $ rails g scaffold movie --skip |
在Rails 5中,您仍然可以运行
1 | $rails generate scaffold movie --skip |
创建所有丢失的脚手架文件或
1 | rails generate scaffold_controller Movie |
仅创建控制器和视图。
有关更好的解释,请查看rails scaffold
您可以使用
1 2 3 | rails g scaffold_controller User name email # or rails g scaffold_controller User name:string email:string |
此命令将生成以下文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | create app/controllers/users_controller.rb invoke haml create app/views/users create app/views/users/index.html.haml create app/views/users/edit.html.haml create app/views/users/show.html.haml create app/views/users/new.html.haml create app/views/users/_form.html.haml invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke jbuilder create app/views/users/index.json.jbuilder create app/views/users/show.json.jbuilder |