.rename_tableэто метод экземпляра, а не метод класса, поэтому вызов Class.methodне будет работать. Вместо этого вы должны создать экземпляр класса, и вызовите метод экземпляра, например: Class.new.method.
[РЕДАКТИРОВАТЬ] В этом случае, ActiveRecord::ConnectionAdapters::SchemaStatementsдаже не класс (как указано Cam), что означает, что вы даже не можете создать экземпляр этого в соответствии с тем, что я сказал выше. И даже если бы вы использовали пример Кэма class Foo; include ActiveRecord::ConnectionAdapters::SchemaStatements; def bar; rename_table; end; end;, это все равно не сработало бы, поскольку rename_tableвыдвигает исключение.
С другой стороны, ActiveRecord::ConnectionAdapters::MysqlAdapter это класс, и это, скорее всего , этот класс вы должны использовать , чтобы переименовать таблицу (или SQLite или PostgreSQL, в зависимости от того, что базы данных вы используете). Теперь, как это происходит, ActiveRecord::ConnectionAdapters::MysqlAdapterуже доступен через Model.connection, так что вы должны быть полностью в состоянии сделать Model.connection.rename_table, используя любую модель в вашем приложении. [/РЕДАКТИРОВАТЬ]
Однако, если вы хотите переименовать таблицу навсегда, я бы предложил использовать для этого миграцию. Это простой и предпочтительный способ управления структурой вашей базы данных с помощью Rails. Вот как это сделать:
# Commandline
rails generate migration rename_my_table
# In db/migrate/[timestamp]_rename_my_table.rb:
class RenameMyTable < ActiveRecord::Migration
def self.up
rename_table :my_table, :my_new_table
end
def self.down
rename_table :my_new_table, :my_table
end
end
Затем вы можете запустить миграцию с помощью rake db:migrate(которая вызывает self.upметод) и использовать rake db:rollback(которая вызывает self.down) для отмены миграции.