Làm thế nào để bạn đặt tên cho việc di chuyển trong Rails?

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
5

Bâ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 cho

Di 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ển

Mẹ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 

Chủ Đề