1

I'm using Inherited resources for my controllers. And now i have model:

class Sms < ActiveRecord::Base
end

And i want controller for it, where i make defaults:

class Admin::SmsesController < Admin::InheritedResources
  defaults :resource_class => Sms,
           :collection_name => 'smses',
           :instance_name => 'sms'
end

but i can not understand, why it still trying to get "Smse" model:

NameError in Admin::SmsesController#index
uninitialized constant Smse

Pls help.

BazZy
  • 2,429
  • 3
  • 21
  • 26

1 Answers1

2

The problem is that Rails doesn't know that the plural of Sms is Smses. If you go to the Rails console you should see that:

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

When faced with a plural it doesn't recognise, singularize just truncates the final "s", which is why your app is looking for a nonexistent Smse model.

You will save yourself a lot of headaches by configuring Rails to pluralize/singularize your models correctly. In the file config\initializers\inflections.rb you should find some examples of how to do this. What you want is:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'sms', 'smses'
end

Then I don't think you should need to put the defaults option in there at all - it should all work out of the box.

Andrew Haines
  • 6,574
  • 21
  • 34