1

Я использую Inherited resources для моих контроллеров. А теперь у меня есть модель:Rails 3 inherited_resources игнорирует настройку по умолчанию

class Sms < ActiveRecord::Base 
end 

И я хочу контроллер для него, где я сделать по умолчанию:

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

, но я не могу понять, почему он до сих пор пытается получить «SmSe» модель:

NameError in Admin::SmsesController#index 
uninitialized constant Smse 

Справка по Pls.

ответ

2

Проблема в том, что Rails не знает, что множественное число Sms - это Smses. Если вы идете в Rails консоли вы должны увидеть, что:

> "Sms".pluralize 
=> "Sms" 

> "Smses".singularize 
=> "Smse" 

Столкнувшись с множественным он не признает, просто обрежет образовывать форму единственного числа окончательные «с», поэтому ваше приложение ищет несуществующий SmSe модель.

Вы сможете сэкономить много головных болей, настроив Rails, чтобы правильно или правильно моделировать ваши модели. В файле config \ initializers \ inflections.rb вы должны найти несколько примеров того, как это сделать. Чего вы хотите:

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

Тогда я не думаю, что вам следует нужно поставить параметр настройки по умолчанию там вообще - все это должно работать из коробки.