В чистом Ruby, поскольку имена классов являются константами, вы можете сделать это, чтобы получить класс из строки:
classname = 'Posts'
p Kernel.const_get(classname).methods
В Rails есть хороший ярлык, constantize
только для этого:
p 'Posts'.constantize.methods
Если имя класса, например, 'editable_file', сначала вызовите метод camelize
:
p 'editable_file'.camelize.constantize # EditableFile
p 'extensions/editable_file'.camelize.constantize # Extensions::EditableFile
РЕДАКТИРОВАТЬ: Если вы действительно хотите получить имя контроллера не демодулированным,этот код в config/initializers/controller_name.rb
должен обеспечить это:
class ActionController::Metal
def self.controller_name
# @controller_name ||= self.name.demodulize.sub(/Controller$/, '').underscore
@controller_name ||= self.name.sub(/Controller$/, '').underscore
end
end