Rails неортодоксальное обозначение моделей с аббревиатурами

В приложении, которое я создаю, я храню XML файл в своей базе данных с помощью ассоциации acts_as_tree. Я хотел бы назвать класс XMLElement, но это отбрасывает рельсы, поскольку капитализация нестандартна. Он ищет XMLElement из имени файла xml_element.rb. Я попытался изменить имя файла на x_m_l_element.rb, чтобы попытаться обмануть его, подумав, что "XML" - это действительно два слова, но это тоже не сработало. Должен ли я просто сосать его и использовать имя XMLElement вместо более идеального XMLElement, или есть лучший способ решить эту проблему?

Ответы

Ответ 1

Соглашение о конфигурации человека. Отсоедините его.

Ответ 2

Добавьте в config/initializers/inflections.rb следующее.

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym 'XML'
end

Теперь запущенный $ rails g model XMLElement… создаст класс с именем XMLElement в файле с именем xml_element.rb и связанной таблицей xml_elements.

Ответ 3

Да, вы должны использовать XmlElement.

Не только для этого примера, но и для каждого аспекта приложения, он никогда не окупится, чтобы отклонить соглашения. Существует так много "магии", что под капотом Rails это просто не стоит.