По крайней мере, в Rails 4 (возможно, раньше?) Вы можете вызвать создать таблицу непосредственно на экземпляре ActiveRecord::ConnectionAdapters
, используя тот же синтаксис, что и при миграции.
Вы можете получить соединение для вашей базы данных (при условии, что у вас есть только одна база данных), позвонив по номеру ActiveRecord::Base.connection
. Итак, Ruby для вашего примера будет выглядеть так:
unless ActiveRecord::Base.connection.table_exists?(:posts)
ActiveRecord::Base.connection.create_table :posts do |t|
# :id is created automatically
t.string :title
t.text :body
end
end
Примечание. Если модель уже определена и она использует ту же базу данных, что и база данных, в которой вы хотите создать таблицу, вы можете вместо этого получить объект подключения. Для создания одноразовой таблицы в консоли я позвоню User.connection.create_table
просто потому, что она меньше печатает.