Учебники

Ruby on Rails — Миграции

Rails Migration позволяет использовать Ruby для определения изменений в схеме базы данных, что позволяет использовать систему управления версиями для синхронизации данных с реальным кодом.

Это имеет много применений, в том числе —

  • Команды разработчиков — если один человек вносит изменения в схему, другим разработчикам просто нужно обновить и запустить «rake migrate».

  • Производственные серверы. Запустите «rake migrate», когда вы выпускаете новую версию, чтобы обновить базу данных.

  • Несколько компьютеров — если вы разрабатываете как на настольном компьютере, так и на ноутбуке, или в нескольких местах, миграции могут помочь вам синхронизировать их все.

Команды разработчиков — если один человек вносит изменения в схему, другим разработчикам просто нужно обновить и запустить «rake migrate».

Производственные серверы. Запустите «rake migrate», когда вы выпускаете новую версию, чтобы обновить базу данных.

Несколько компьютеров — если вы разрабатываете как на настольном компьютере, так и на ноутбуке, или в нескольких местах, миграции могут помочь вам синхронизировать их все.

Что может сделать Rails Migration?

  • create_table (имя, параметры)
  • drop_table (имя)
  • rename_table (old_name, new_name)
  • add_column (имя_таблицы, имя_столбца, тип, параметры)
  • переименовать_колонку (имя_таблицы, имя_столбца, имя_столбца_нов)
  • change_column (имя_таблицы, имя_столбца, тип, параметры)
  • remove_column (имя_таблицы, имя_столбца)
  • add_index (имя_таблицы, имя_столбца, тип_индекса)
  • remove_index (имя_таблицы, имя_столбца)

Миграции поддерживают все основные типы данных . Ниже приведен список типов данных, которые поддерживает миграция.

  • строка — для небольших типов данных, таких как заголовок.

  • текст — для более длинных текстовых данных, таких как описание.

  • целое число — для целых чисел.

  • float — для десятичных дробей.

  • datetime and timestamp — сохранить дату и время в столбце.

  • дата и время — сохраните только дату или только время.

  • двоичный файл — для хранения данных, таких как изображения, аудио или фильмы.

  • Boolean — для хранения значений true или false.

строка — для небольших типов данных, таких как заголовок.

текст — для более длинных текстовых данных, таких как описание.

целое число — для целых чисел.

float — для десятичных дробей.

datetime and timestamp — сохранить дату и время в столбце.

дата и время — сохраните только дату или только время.

двоичный файл — для хранения данных, таких как изображения, аудио или фильмы.

Boolean — для хранения значений true или false.

Допустимые параметры столбца . Ниже приведен список допустимых параметров столбца.

  • предел (: предел => «50»)

  • по умолчанию (: default => «бла»)

  • null (: null => false подразумевает, что NOT NULL )

предел (: предел => «50»)

по умолчанию (: default => «бла»)

null (: null => false подразумевает, что NOT NULL )

ПРИМЕЧАНИЕ. — Действия, выполняемые Rails Migration, могут быть выполнены с помощью любого интерфейсного интерфейса или непосредственно по приглашению SQL, но Rails Migration делает все эти действия очень легкими.

Смотрите Rails API для подробностей об этом.

Создать Миграции

Вот общий синтаксис для создания миграции:

application_dir> rails generate migration table_name

Это создаст файл db / migrate / 001_table_name.rb. Файл миграции содержит основной синтаксис Ruby, который описывает структуру данных таблицы базы данных.

ПРИМЕЧАНИЕ. — Перед запуском генератора миграции рекомендуется очистить существующие миграции, сгенерированные генераторами моделей.

Мы создадим две миграции, соответствующие нашим трем таблицам — книги и предметы .

Книги по миграции должны быть следующими —

tp> cd library
library> rails generate migration books

Выше команда генерирует следующий код.

генерировать

Тема миграции должна быть следующей —

tp> cd library
library> rails generate migration subjects

Выше команда генерирует следующий код.

генерировать

Обратите внимание, что вы используете строчную букву для книги, темы и множественного числа при создании миграций. Это парадигма Rails, которой вы должны следовать каждый раз, когда создаете миграцию.

Изменить код

Перейдите в подкаталог db / migrate своего приложения и отредактируйте каждый файл один за другим, используя любой простой текстовый редактор.

Измените 001_books.rb следующим образом —

Столбец ID будет создан автоматически, поэтому не делайте этого и здесь.

class Books < ActiveRecord::Migration
   
   def self.up
      create_table :books do |t|
         t.column :title, :string, :limit => 32, :null => false
         t.column :price, :float
         t.column :subject_id, :integer
         t.column :description, :text
         t.column :created_at, :timestamp
      end
   end

   def self.down
      drop_table :books
   end
end

Метод self.up используется при переходе на новую версию, self.down используется для отката любых изменений, если это необходимо. На данный момент вышеуказанный скрипт будет использоваться для создания таблицы книг .

Измените 002_subjects.rb следующим образом —

class Subjects < ActiveRecord::Migration
   def self.up
      
      create_table :subjects do |t|
         t.column :name, :string
      end
	
      Subject.create :name => "Physics"
      Subject.create :name => "Mathematics"
      Subject.create :name => "Chemistry"
      Subject.create :name => "Psychology"
      Subject.create :name => "Geography"
   end

   def self.down
      drop_table :subjects
   end
end

Приведенный выше скрипт будет использоваться для создания таблицы субъектов и создаст пять записей в таблице субъектов.

Запустите миграцию

Теперь, когда вы создали все необходимые файлы миграции. Настало время выполнить их в отношении базы данных. Для этого перейдите в командную строку и перейдите в каталог библиотеки, в котором находится приложение, а затем введите rake migrate следующим образом:

library> rake db:migrate

Это создаст таблицу schema_info, если она не существует, которая отслеживает текущую версию базы данных — каждая новая миграция будет новой версией, и любые новые миграции будут выполняться, пока ваша база данных не достигнет текущей версии.

Rake — это программа сборки Ruby, похожая на Unix make, которую использует Rails для упрощения выполнения сложных задач, таких как обновление структуры базы данных и т. Д.

Запуск миграций для производственных и тестовых баз данных

Если вы хотите указать, какую среду Rails использовать для миграции, используйте переменную оболочки RAILS_ENV.

Например —

library> export RAILS_ENV = production
library> rake db:migrate
library> export RAILS_ENV = test
library> rake db:migrate
library> export RAILS_ENV = development
library> rake db:migrate

ПРИМЕЧАНИЕ. — В Windows вместо команды экспорта используйте «set RAILS_ENV = production».

Что дальше?

Теперь у нас есть база данных и необходимые таблицы. В двух последующих главах мы рассмотрим два важных компонента: Контроллер (ActionController) и Вид (ActionView).