Rails 3 наследует_ресурсы игнорирует настройку «по умолчанию» - PullRequest
1 голос
/ 20 февраля 2012

Я использую унаследованные ресурсы для своих контроллеров.И теперь у меня есть модель:

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

Пожалуйста, помогите.

1 Ответ

2 голосов
/ 18 июля 2012

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

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

Когда он сталкивается с множественным числом, которое он не распознает, Singularize просто усекает последние "s", поэтому ваше приложение ищет несуществующую модель Smse.

Вы избавите себя от множества головных болей, настроив Rails для правильной множественной / сингулярной модели. В файле config \ initializer \ inflections.rb вы найдете несколько примеров того, как это сделать. То, что вы хотите:

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

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

...