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

tom*_*opp 8 resources ruby-on-rails ruby-on-rails-3

如果您使用单一资源,脚手架的常规方法不起作用,有没有办法通过脚手架获得默认的奇异控制器?假如一个用户只有一个帖子就可以轻松运行如下命令:

rails g scaffold post -singular
Run Code Online (Sandbox Code Playgroud)

mli*_*elt 2

当您查看 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
Run Code Online (Sandbox Code Playgroud)

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

  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
Run Code Online (Sandbox Code Playgroud)

所以看起来脚手架生成了通常的视图模板。

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