Не удается получить множественное / единственное число при работе с ActiveSupport :: Inflector (в irb) - PullRequest
20 голосов
/ 28 февраля 2011
irb(main):001:0> require 'active_support'
=> true
irb(main):002:0> require 'active_support/inflector/inflections'
=> true
irb(main):003:0> ActiveSupport::Inflector.pluralize('test')
=> "test"
irb(main):004:0> ActiveSupport::Inflector.singularize('tests')
=> "tests"
irb(main):005:0> ActiveSupport::Inflector.titleize('hat simulator')
=> "Hat Simulator"
<ort::Inflector.tableize("america's number one hat simulator")
=> "america's number one hat simulator"

Ну, в принципе, это вопрос.Меня смущает, что такие методы, как titleize, вроде бы работают нормально, но tableize, pluralize и singularize нет.

Я забыл что-то требовать?

(В отдельной заметке я замечаю на этой странице приведены примеры, подобные "post".pluralize, которые, когда я пытался, привели к NoMethodError: undefined method 'pluralize' for "post":String. Но, возможно, это что-то, что можно сохранить для другого вопроса.)

1 Ответ

37 голосов
/ 28 февраля 2011

Доступ к #pluralize без добавления новых методов в класс String:

require 'active_support/inflector'
ActiveSupport::Inflector.pluralize('test')
#=> "tests"

Для String класса:

require 'active_support/core_ext/string'
"test".pluralize
#=> "tests"

, который фактически вызывает ActiveSupport::Inflector.pluralize снизу:

def pluralize
  ActiveSupport::Inflector.pluralize(self)
end
...