Как ActiveRecord выводит отображение из единственного (класс) и множественного числа (таблица);и можно ли переопределить? - PullRequest
7 голосов
/ 12 декабря 2010

Как ActiveRecord выводит сопоставление из единственного (класс) и множественного числа (таблица), например:

People = Person
Ducks = Duck
Geese = Goose 
Categories = Category

Похоже, хорошая идея в концепции, но не знаю, нужно ли мне отображать экземпляры в единственном (классе) и множественном числе (в таблице), или если ActiveRecord как-то «волшебным образом» делает это. Кроме того, похоже, что это может привести к дополнительным издержкам, когда нужно придумать имя, которое не так просто, как просто добавить "s".

ПРИМЕЧАНИЕ: Перенесена вторая часть этого вопроса сюда: Назначает ли ActiveRecord ключ для каждой таблицы, используя соглашение об именах «ID», и если да, то почему?

1 Ответ

10 голосов
/ 12 декабря 2010

Rails использует ActiveSupport :: Inflector для отслеживания слов и способов их изменения. Например, Rails будет знать, как хранить UserPreference в user_preferences

Вы также можете добавить свои инфлексии к инфлектору для обработки странных случаев, когда добавление s не имеет смысла.

В /config/initializers/inflections.rb вы получаете следующее:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural /^(ox)$/i, '\1en'
  inflect.singular /^(ox)en/i, '\1'
  inflect.irregular 'person', 'people'
  inflect.uncountable %w( fish sheep )
end

http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...