Skip to content

Instantly share code, notes, and snippets.

@elvisgiv
Last active August 29, 2015 14:11
Show Gist options
  • Save elvisgiv/7688d3fd3c422d9ac8ca to your computer and use it in GitHub Desktop.
Save elvisgiv/7688d3fd3c422d9ac8ca to your computer and use it in GitHub Desktop.
Creating table DB from command line

#Creating DB http://rusrails.ru/rails-database-migrations

Cначала создаем новое rails application >rails new your_application_name потом заходим в папку созданного приложения и открываем файл database.yml, который находится ..\your_application_name\config\ и меняем название баз данны на те, которые приятны нашему слуху:

development:
<<: *default
database: НА_ВАШЕ_УСМОТРЕНИЕ_dev

Заходим в папку, в которой находится приложение и пишем:

>rails db:create

Эт команда создаст ПУСТУЮ базу данных с названием НА_ВАШЕ_УСМОТРЕНИЕ_dev, в которую мы будем добавять таблицы!!!

creating table

Заходим в папку, в которой находится приложение и пишем: rails generate model YourTableName column_name:data_types. Например:

D:\projects\servicedesk\site>rails generate model DeviceBrand name:string title:string archived:boolean

это создает:

invoke    active_record
create    db/migrate/20141217120648_create_device_models.rb
create    app/models/device_model.rb
invoke    rspec
create    spec/models/device_model_spec.rb

чтобы ТАБЛИЦА была занесена в нашу БД пишем в командной строке, предварительно зайдя в папку с приложением, rake db:migrate. Например:

D:\projects\servicedesk\site>rake db:migrate

Смотрим в нашу базу и видим появление таблицы ### device_models

adding column to table

Заходим в папку, в которой находится приложение и пишем: rails generate migration add_your_column_name_to_table_name new_column_name:data_types. Например:

D:\projects\servicedesk\site>rails generate migration add_enabled_to_device_brands enabled:boolean

это создает:

invoke    active_record
create    db/migrate/20141217123242_add_enabled_to_device_models.rb

чтобы КОЛОНКА была занесена в нашу БД пишем в командной строке, предварительно зайдя в папку с приложением, rake db:migrate. Например:

D:\projects\servicedesk\site>rake db:migrate

Смотрим в Таблицу в нашей базе и видим появление колонки ### enabled ##ROLLBACK Чтобы "откатить" миграции на необходимое количество шагов, нужно ввести в командную строку следующее:

D:\projects\servicedesk\site>rake db:rollback STEP=2

где 2 - это количество откатываемых назад миграций ##Change column Data Type http://stackoverflow.com/questions/5191405/ror-migration-change-a-column-type-from-date-to-datetime Для того, чтобы изменить тип данных колонки в таблице базы данных необходимо ввести в командной строке следующую команду:

rails g migration change_date_format_in_my_table

в Моем случае Я вводил так:

D:\projects\servicedesk\site>rails g migration change_date_format_in_devices

эта команда создает файл в папке

*\db\migrate\20141221184723_change_date_format_in_devices.rb

открываем этот файл и видим:

class ChangeDateFormatInDevices < ActiveRecord::Migration
    def change
    end
end

заменяем метод def change на два метода def up и def down:

class ChangeDateFormatInDevices < ActiveRecord::Migration
    def up
        change_column :my_table, :my_column, :datetime
    end
    def down
        change_column :my_table, :my_column, :date
    end
end

в МОЕМ случае я менял одновременно ДВЕ колонки со значения :integer на значение :string и МОЙ код выглядит так:

class ChangeDateFormatInDevices < ActiveRecord::Migration
  def up
    change_column :devices, :serial, :string
    change_column :devices, :serials_additional, :string
  end
  def down
    change_column :devices, :serial, :integer
    change_column :devices, :serials_additional, :integer
  end
end

далее пишем в командной строке

D:\projects\servicedesk\site>rake db:migrate

и смена типа данных в колонке готова!!!

Добавление индекса для существующей колонки

http://rusrails.ru/rails-database-migrations

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment