Search code examples
ruby-on-railsrubyruby-on-rails-3

Rails scaffolding pluralisation is incorrect for "cafe"


I want to create a cafe and a cave controller.

When I try to create my cafe using rails scaffolding, via the command

rails g scaffold cafe name:string

It is deriving the plural form of "cafe" as "caves", which means I can't make my caves controller since the name is already used.

How can I make rails use the correct pluralisation?


Solution

  • You can create your own inflections.

    Add this to your config/initializers/inflections.rb

        ActiveSupport::Inflector.inflections do |inflect|
            inflect.plural "cafe", "cafes"
        end
    

    (Restart your server after making this change. This is not required for the scaffolding command itself but it will be required when you want to actually view/use the code)

    Now when you run rails g scaffold cafe you'll get:

    ...
    app/views/cafes
          create      app/views/cafes/index.html.erb
          create      app/views/cafes/edit.html.erb
          create      app/views/cafes/show.html.erb
          create      app/views/cafes/new.html.erb
          create      app/views/cafes/_form.html.erb
    etc
    

    This may help you: http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-inflections