Rails поставляется с методом под названием underscore
, который позволит вам преобразовывать строки CamelCased в строки underscore_separated. Таким образом, вы можете сделать это:
FooBar.name.underscore.to_sym
Но вам придется установить ActiveSupport только для этого, как говорит ipsum.
Если вы не хотите устанавливать ActiveSupport только для этого, вы можете самостоятельно обезопасить underscore
от *1007* (функция подчеркивания определена в ActiveSupport :: Inflector ):
class String
def underscore
word = self.dup
word.gsub!(/::/, '/')
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
word.tr!("-", "_")
word.downcase!
word
end
end