有没有办法在rails中构建单例资源?

如果你正在使用一个单一的资源,脚手架的常规方法不起作用,有没有办法通过脚手架获得默认的奇异控制器? 假如一个用户只有一个post,那么就可以运行一个简单的命令:

rails g scaffold post -singular 

当您查看Rails 3.1.1中的脚手架选项时,您将看到以下内容:

 Usage: rails generate scaffold NAME [field:type field:type] [options] Options: ... ActiveRecord options: ... Rspec options: [--singleton] # Supply to create a singleton controller 

rails g scaffold Post name:string body:text --singleton的输出rails g scaffold Post name:string body:text --singleton is

  invoke active_record create db/migrate/20111103072825_create_posts.rb create app/models/post.rb invoke rspec create spec/models/post_spec.rb route resources :posts invoke scaffold_controller create app/controllers/posts_controller.rb invoke haml create app/views/posts create app/views/posts/index.html.haml create app/views/posts/edit.html.haml create app/views/posts/show.html.haml create app/views/posts/new.html.haml create app/views/posts/_form.html.haml invoke rspec create spec/controllers/posts_controller_spec.rb create spec/views/posts/edit.html.haml_spec.rb create spec/views/posts/new.html.haml_spec.rb create spec/views/posts/show.html.haml_spec.rb invoke helper create spec/helpers/posts_helper_spec.rb create spec/routing/posts_routing_spec.rb invoke rspec create spec/requests/posts_spec.rb invoke helper create app/helpers/posts_helper.rb invoke rspec invoke assets invoke coffee create app/assets/javascripts/posts.js.coffee invoke scss create app/assets/stylesheets/posts.css.scss invoke scss identical app/assets/stylesheets/scaffolds.css.scss 

所以脚手架似乎生成了通常的视图模板。

在Rails 3.0中,这是整个发生器的选项,而不仅仅是Rspec的选项。 有关Rails 3中的生成器,请参阅Railscast 216 。 也许您会在Rails 3.0.x中找到满足您需求的生成器。

我同意这一点,所以我创建了一个Github问题 。 如果它有帮助,请遵循此 但是我发现修复此问题的唯一方法是手动修复问题。 这意味着手动更改名称。 我知道你不想这样做,但我发现有些时候这是唯一的方法。