Giả sử chúng ta có cấu hình đa cơ sở dữ liệu trong ứng dụng Rails có cơ sở dữ liệu chính và phụ
default: &default
adapter: sqlite3
development:
primary:
"db/secondary_development.sqlite3", :pool=>20, :timeout=>10000}, @owner_name=nil>
Sau đó
Rails đã thực hiện các thay đổi đối với lược đồ kết xuất [hoặc cấu trúc] cho cơ sở dữ liệu và đặt lại ActiveRecord::Base
về cấu hình ban đầu khi thực thi
db/schema.rb
db/secondary_schema.rb
5Bây giờ chúng ta có thể chạy
db/schema.rb
db/secondary_schema.rb
6 và nó sẽ tạo tệp lược đồ cho cơ sở dữ liệu, chúng ta chạy di chuyển choDi chuyển Rails chỉ là mã Ruby. Trong ứng dụng Rails của bạn, quá trình di chuyển của bạn được lưu trữ trong db/migrate
[liên quan đến gốc Rails]
Di chuyển, theo định nghĩa, là một thay đổi đối với lược đồ cơ sở dữ liệu, nhưng thay đổi đầu tiên cần thực hiện là tạo một bảng nếu bạn chưa tạo, bạn có thể xem lại chi tiết hơn tại Viết mô hình Rails
1] Tạo tệp di chuyển
Đối với các thay đổi chung, cách dễ nhất là để Rails tạo các tệp di chuyển bạn cần cho bạn. Trong dòng lệnh của bạn, trong thư mục gốc Rails, hãy nhập
rails g migration migration_description
Ví dụ
rails g migration change_username_field_to_email
Giống như tạo mô hình, Rails sẽ tạo một vài tệp cho bạn khi tạo di chuyển. Đầu tiên là chính tệp di chuyển, nằm ở db/migrate
, trong trường hợp này sẽ được đặt tên là
rails g migration change_username_field_to_email
0. Kiểm tra tại đây để biết thêm thông tin về Quy ước đặt tên di chuyểnMẹo chuyên nghiệp. Nếu tên di chuyển bạn viết trong bước này có dạng “AddXXXToYYY” hoặc “RemoveXXXFromYYY” và theo sau là danh sách tên và loại cột, thì quá trình di chuyển có chứa các câu lệnh addcolumn và removecolumn thích hợp sẽ được tạo cho bạn [nếu không, . Bada-bing
Thí dụ
rails generate migration AddPartNumberToProducts part_number:string
2] Viết Phương thức Lên & Xuống hoặc Phương thức Thay đổi trong tệp Di chuyển
Tệp di chuyển sẽ được viết sẵn cho chúng tôi và sẽ bắt đầu bằng dòng này
class ClassName