2013-03-30 3 views
1

Я создаю модель с именем Stadium с rails g model Stadium, но рельсы преобразуют имя таблицы в stadia.Rails, создающий неправильное имя таблицы для модели

Я вручную изменил имя таблицы на stadium в процессе миграции и добавил set_table_name "stadium" в классе модели. Но все мои маршруты ищут stadia_path.

Я пробовал rails g model Stadium --force-plural без успеха.

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

+0

Возможный дубликат http://stackoverflow.com/questions/1185035/how-do-i-override-rails-naming-conventions – depa

ответ

10

В словаре говорится, что как «стадионы», так и «стадионы» являются правильными (при условии, что слово «латинское», «stadia», поскольку множественное число для средних слов, заканчивающихся на -um, кажется законным).

Просто добавьте в конфигурационный/инициализаторах/inflections.rb:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'stadium', 'stadiums' 
end 

Вы можете настроить все виды нерегулярных множественном здесь.

Уничтожить старое поколение, делая

rails d model Stadium 

и создать его снова делать

rails g model Stadium 

Вы увидите, как она волшебным образом создает файлы, как это:

db/migrate/20130330130335_create_stadiums.rb 

Затем запустите миграция, и вы настроены!

+0

хороший ответ! Спасибо за подробное объяснение :) –

2

Для перегибы вы должны что-то вроде этого в config/initializers/inflections.rb:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'stadium', 'stadiums' 
end 

надеюсь, что это помогает!

+0

Уверен! :) Рад, что это помогло. – uday