提问



我是Rails的新手,所以我目前的项目处于一种奇怪的状态。


我生成的第一件事是电影模型。然后我开始更详细地定义它,添加了一些方法等。


我现在意识到我应该用rails generate scaffold生成它来连接诸如路由,视图,控制器等的东西。


我试图生成脚手架,但我收到一个错误,说已存在同名的迁移文件。


现在为我的电影创建脚手架的最佳方式是什么?(使用rails 3)

最佳参考


TL; DR :rails g scaffold_controller <name>


即使您已经有模型,仍然可以使用rails generate选项生成必要的控制器和迁移文件。如果您运行rails generate -h,您可以看到所有可用的选项。


Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets


如果你想为你的模型生成一个控制器支架,请参见scaffold_controller。为了清楚起见,这里的描述如下:



  找出一个脚手架控制器及其视图。传递模型名称,
      CamelCased或under_scored,以及视图列表作为参数。
      控制器名称将作为模型的复数版本进行检索
      名称。

  
  要在模块中创建控制器,请将模型名称指定为a
      像parent_module/controller_name这样的路径。

  
  这会在app/controllers中生成一个控制器类并调用helper,
      模板引擎和测试框架生成器。



要创建资源,你可以使用resource生成器,并创建一个迁移,你也可以看到migration生成器(参见,所有这些疯狂的模式)。这些提供了创建缺失文件以构建资源的选项。或者你可以用--skip选项运行rails generate scaffold来跳过任何存在的文件:)


我建议花一些时间查看生成器内部的选项。他们在书本等方面感觉非常好,但是他们非常方便。

其它参考1


Lee Jarvis的答案很好,这只是命令,例如;我们已经有一个名为User的现有模型:


rails g scaffold_controller User

其它参考2


对于那些使用现有数据库启动rails应用程序的人来说,有一个名为schema_to_scaffold的酷宝石来生成一个脚手架脚本。
它输出:



  rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string



从你schema.rb我们你重命名schema.rb.检查[24]

其它参考3


这个命令可以做到这一点:


$ rails g scaffold movie --skip

其它参考4


您可以使用scaffold_controller并记住传递模型的attributes,否则将生成没有属性的脚手架。


rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string


此命令将生成以下文件:


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

其它参考5


Rails 5 中,您仍然可以运行


$rails generate scaffold movie --skip


创建所有丢失的脚手架文件或


rails generate scaffold_controller Movie


仅创建控制器和视图。


有关更好的解释,请查看rails scaffold [25]