Ruby on Rails - Di chuyển

Rails Migration cho phép bạn sử dụng Ruby để xác định các thay đổi đối với lược đồ cơ sở dữ liệu của mình, giúp bạn có thể sử dụng hệ thống kiểm soát phiên bản để giữ cho mọi thứ được đồng bộ hóa với mã thực.

Điều này có nhiều công dụng, bao gồm -

  • Teams of developers - Nếu một người thực hiện thay đổi giản đồ, các nhà phát triển khác chỉ cần cập nhật và chạy "di chuyển rake".

  • Production servers - Chạy "rake migrate" khi bạn tung ra bản phát hành mới để cập nhật cơ sở dữ liệu.

  • Multiple machines - Nếu bạn phát triển trên cả máy tính để bàn và máy tính xách tay hoặc ở nhiều vị trí, việc di chuyển có thể giúp bạn đồng bộ hóa tất cả chúng.

Rails Migration có thể làm gì?

  • create_table (tên, tùy chọn)
  • drop_table(name)
  • rename_table (old_name, new_name)
  • add_column (table_name, column_name, type, options)
  • rename_column (table_name, column_name, new_column_name)
  • change_column (table_name, column_name, type, options)
  • remove_column (table_name, column_name)
  • add_index (table_name, column_name, index_type)
  • remove_index (table_name, column_name)

Migrations support all the basic data types - Sau đây là danh sách các kiểu dữ liệu mà việc di chuyển hỗ trợ -

  • string - đối với các kiểu dữ liệu nhỏ như tiêu đề.

  • text - cho các phần dữ liệu văn bản dài hơn, chẳng hạn như mô tả.

  • integer - cho các số nguyên.

  • float - cho số thập phân.

  • datetime and timestamp - lưu trữ ngày và giờ vào một cột.

  • date and time - chỉ lưu trữ ngày hoặc chỉ thời gian.

  • binary - để lưu trữ dữ liệu như hình ảnh, âm thanh hoặc phim.

  • Boolean - để lưu trữ các giá trị đúng hoặc sai.

Valid column options are - Sau đây là danh sách các tùy chọn cột hợp lệ.

  • limit (: giới hạn => “50”)

  • default (: default => “blah”)

  • null(: null => false ngụ ý KHÔNG ĐỦ )

NOTE - Các hoạt động được thực hiện bởi Rails Migration có thể được thực hiện bằng cách sử dụng bất kỳ GUI front-end nào hoặc trực tiếp trên SQL prompt, nhưng Rails Migration làm cho tất cả các hoạt động đó rất dễ dàng.

Xem API Rails để biết chi tiết về những thứ này.

Tạo cuộc di cư

Đây là cú pháp chung để tạo di chuyển -

application_dir> rails generate migration table_name

Thao tác này sẽ tạo tệp db / migrate / 001_table_name.rb. Tệp di chuyển chứa cú pháp Ruby cơ bản mô tả cấu trúc dữ liệu của bảng cơ sở dữ liệu.

NOTE - Trước khi chạy trình tạo di chuyển, bạn nên làm sạch các di chuyển hiện có được tạo bởi trình tạo mô hình.

Chúng tôi sẽ tạo hai lần di chuyển tương ứng với ba bảng của chúng tôi - books and subjects.

Di chuyển sách phải như sau:

tp> cd library
library> rails generate migration books

Lệnh trên tạo ra đoạn mã sau.

chủ thể di chuyển phải như sau:

tp> cd library
library> rails generate migration subjects

Lệnh trên tạo ra đoạn mã sau.

Lưu ý rằng bạn đang sử dụng chữ thường cho sách và chủ đề và dạng số nhiều trong khi tạo di chuyển. Đây là mô hình Rails mà bạn nên tuân theo mỗi khi tạo Migration.

Chỉnh sửa mã

Truy cập thư mục con db / migrate của ứng dụng của bạn và chỉnh sửa từng tệp một bằng bất kỳ trình soạn thảo văn bản đơn giản nào.

Sửa đổi 001_books.rb như sau:

Cột ID sẽ được tạo tự động, vì vậy đừng làm điều đó ở đây.

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

Phương pháp self.up được sử dụng khi chuyển sang phiên bản mới, self.downđược sử dụng để khôi phục mọi thay đổi nếu cần. Tại thời điểm này, tập lệnh trên sẽ được sử dụng để tạobooks bàn.

Sửa đổi 002_subjects.rb như sau:

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

Tập lệnh trên sẽ được sử dụng để tạo subjects bảng và sẽ tạo năm bản ghi trong bảng chủ đề.

Chạy di chuyển

Bây giờ bạn đã tạo tất cả các tệp di chuyển cần thiết. Đã đến lúc thực thi chúng đối với cơ sở dữ liệu. Để thực hiện việc này, hãy chuyển đến dấu nhắc lệnh và đi tới thư mục thư viện chứa ứng dụng, sau đó nhậprake migrate như sau -

library> rake db:migrate

Thao tác này sẽ tạo một bảng "schema_info" nếu nó không tồn tại, bảng này theo dõi phiên bản hiện tại của cơ sở dữ liệu - mỗi lần di chuyển mới sẽ là một phiên bản mới và mọi di chuyển mới sẽ được chạy cho đến khi cơ sở dữ liệu của bạn ở phiên bản hiện tại.

Rakelà một chương trình xây dựng Ruby tương tự như chương trình tạo Unix mà Rails tận dụng để đơn giản hóa việc thực thi các tác vụ phức tạp như cập nhật cấu trúc của cơ sở dữ liệu, v.v.

Chạy di chuyển cho cơ sở dữ liệu sản xuất và thử nghiệm

Nếu bạn muốn chỉ định môi trường Rails nào sẽ sử dụng cho việc di chuyển, hãy sử dụng biến shell RAILS_ENV.

Ví dụ -

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

NOTE- Trong Windows, sử dụng "set RAILS_ENV = production" thay cho lệnh export .

Tiếp theo là gì?

Bây giờ chúng tôi có cơ sở dữ liệu của chúng tôi và các bảng cần thiết có sẵn. Trong hai chương tiếp theo, chúng ta sẽ tìm hiểu hai thành phần quan trọng được gọi là Bộ điều khiển (ActionController) và Chế độ xem (ActionView).

  • Tạo Bộ điều khiển (Action Controller).
  • Tạo Chế độ xem (Action View).