Migrate Là Gì

Migration là một nhân tài của Active record có thể chấp nhận được bạn biến đổi cả cấu tạo cùng tài liệu vào database. Ttốt vì chưng biến đổi thẳng vào database thì Rails có thể chấp nhận được các bạn áp dụng Ruby DSL nhằm biểu đạt việc thay đổi những table.Tiện cách đây không lâu dự án mình chạm chán vấn đề về migration nên mình viết bài viết này. Bài toán đưa ra là Khách mặt hàng mong rollback migration về thời gian như thế nào kia chỉ nhằm chạy code làm việc version làm sao đó thôi mà lại không hẳn code bây chừ. Và cơ hội kia bên mình đã rollback tuy nhiên bị lỗi rollbachồng mà trong những lúc code k ai nghĩ mang lại ngôi trường hòa hợp đó cả. Đó cũng là một vụ việc nhưng ta đề nghị nắm rõ rộng về migration để tránh đông đảo trường thích hợp điều này.Sau khi đọc bài viết bạn có thể biết thêm về:

Hiểu về migration, những biện pháp tạoCác cách chạy migration, rollback chúngHiểu thêm về schema

1. Tổng quan

Migration là 1 trong những giải pháp dễ dàng nhằm chuyển đổi cấu tạo bảng và tài liệu trong database một cách thuận tiện. Bằng cách sử dụng Ruby DSL chúng ta k cần phải viết Squốc lộ bằng tay thủ công, nó hoàn toàn có thể giúp bạn biến đổi database 1 cách độc lậpTưởng tượng mỗi migration khớp ứng vs 1 version của database. Ban đầu, schema là trống rỗng, với mỗi lần migration thì vẫn modify nhằm add hoặc remove sầu table, columns hoặc rows. Active sầu record biết phương pháp để update schema theo thời gian. Và tự bất kể thời khắc làm sao vào vượt khứ đọng cũng hoàn toàn có thể update version của schema cho bạn dạng mới nhất. Active sầu record cũng trở nên update tệp tin db/schema.rb để triển khai cho thống nhất cùng với kết cấu tiên tiến nhất của database.Chúng ta thuộc liếc qua ví dụ về 1 migration:

class CreateProducts Đây là một trong những migration chế tạo ra bảng products trong database. Có 2 trường đó là name và description. Một cột khóa chính là id cũng biến thành được cung ứng sau khoản thời gian chạy migration này, đây là khóa chính khoác định mang đến tất cả Model của Active Record. timestamps đang sản xuất bảng 2 cột sẽ là : created_at cùng updated_at. Các cột này sẽ được cai quản tự động vày ActiveRecord ví như bọn chúng tồn tạiTrước Lúc thực hiện migration thì ko sống thọ table như thế nào cả. Run migration thì table sẽ tiến hành ra đời. Và Active sầu record cũng có thể có cách để bachồng lại cái migration thời gian nãy bằng cách là Rollback lại loại migration đó thì bảng được chế tạo ra lúc trước sẽ ảnh hưởng xóa.Ta cũng rất có thể viết migration Theo phong cách không giống để phát âm bí quyết nó rollback:

class ChangeProductsPrice dir.up là chạy migration. dir.down là chạy rollbachồng lại, trở về thời khắc trước lúc chạy migrationlấy ví dụ như nhỏng giả dụ họ change_column thì rollbachồng sẽ ảnh hưởng lỗi, buộc phải viết code theo kiểu này.

Bạn đang xem: Migrate là gì

2. Tạo migration

2.1 Tạo migration

$ bin/rails generate migration AddPartNumberToProductsCau lệnh sẽ khởi tạo ra 1 migration mới:

class AddPartNumberToProducts Nếu migration thương hiệu bao gồm dạng "AddXXXToYYY" hoặc "RemoveXXXFromYYY" sẽ khởi tạo ra các migration add_column hoặc remove_column. Ta hoàn toàn có thể phân phối những column cùng type của chúng theo sau:

$ bin/rails generate migration AddPartNumberToProducts part_number:stringsẽ tạo ra:

class AddPartNumberToProducts Các migration mang tên theo mô hình CreateXXX với theo sau là list những thương hiệu column với type của bọn chúng sẽ tạo ra table mang tên XXX cùng với phần đông column vẫn liệt kê. Ví dụ:

$ bin/rails generate migration CreateProducts name:string part_number:stringSẽ tạo thành migration:

class CreateProducts

2.2 Tạo model

Lúc sinh sản Mã Sản Phẩm hoàn toàn có thể chế tác migration Từ đó. lấy ví dụ bọn họ chế tạo 1 model new tên là Product.

$ bin/rails generate model Product name:string description:textNó sẽ tạo ra 1 migration mới nhỏng sau:

class CreateProducts Quý Khách hoàn toàn có thể thêm những cột không giống nếu muốn

*
)

3. Chạy migration

Rails cung ứng 1 tập phù hợp của bin/rails tasks nhằm chạy migrationTrước hết câu lệnh chúng ta thường được sử dụng độc nhất vô nhị chính là rails db:migrate . Ở trên đây nó chỉ chạy các migration không chạy,. những migration chạy rồi nó đang k chạy lại nữa. Nó vẫn chạy theo sản phẩm công nghệ từ bỏ thời gianMột chú ý là lúc chạy db:migrate nó cũng biến thành tự động chạy db:schema:dump để cập nhập tệp tin db/schema.rb đến trùng khớp với cấu trúc database của bạnNếu bạn có nhu cầu chạy 1 migration rõ ràng. bạn có thể chạy bằng cách rước tên version là dãy số nhiều năm ở tệp tin migration với chạy:

3.1 Rolling back

Rollback được sử dụng khi bọn họ tạo sai 1 migration với hy vọng sửa chúng, ao ước trở về tại thời điểm chạy migration lỗi kia. Ta hoàn toàn có thể quay lại migration trước bằng cách:

$ bin/rails db:rollbackNó vẫn rollbaông chồng tại thời điểm mới nhất của migration, nếuhy vọng rollback lại nhiều version trước kia nữa thì chỉ định parameter STEP.. Ví dụ:

$ bin/rails db:rollbaông chồng STEP=3Nó vẫn revert 3 migration gần nhất.Ta dùng db:migrate:rebởi vì để chạy roll baông chồng và migration lại:

$ bin/rails db:migrate:rebởi STEP=3Đây là các phương pháp góp bọn họ sửa không đúng các migration mà lại không cần thiết phải reset migration.

Một xem xét Lúc tạo ra migration họ bắt buộc kiểm soát coi nó tất cả rollback được hay là không ^^. cũng có thể nó sẽ không rollbaông xã được vì chưng các nguyên nhân. lấy một ví dụ như change_column thì sẽ không còn rollbaông chồng dc, hoặc lúc ta thêm ĐK vào nhằm chạy migration.

3.2 Cài đặt database

Ta dùng db:thiết đặt sẽ giúp đỡ tạo nên database cùng load schema với khởi tạo thành bọn chúng với seed.

Xem thêm: Cách Chơi Nami - Nami Mùa 11: Bảng Ngọc, Cách Lên Đồ Nami

3.3 Rephối database

Dùng db:rephối nhằm dropdatabase và setup lại nó. Nó tương đương cùng với 2 câu lệnh: db:drop cùng db:cài đặt.

3.4 Chạy 1 migration bất kì

Nếu bạn có nhu cầu chạy 1 migration với up hoặc down, ta hoàn toàn có thể cần sử dụng db:migrate:up cùng db:migrate:down. Và thêm version đằng sau để xác minh sẽ là tệp tin migration nào

3.5 Chạy migration bên trên những môi trường xung quanh khác nhau

Mặc đinc trường hợp chạy db:migrate nó vẫn chạy trên môi trường xung quanh development. Nếu bạn có nhu cầu nó điều khiển xe trên các môi trường xung quanh khác thì chỉ việc thêm trở thành môi trường vào đằng tiếp nối là RAILS_ENV. Ở trên đây bạn muốn chạy migrate bên trên môi trường xung quanh test:

$ bin/rails db:migrate RAILS_ENV=test

4. Schema

4.1 Mục đích

File schema để giúp đỡ chúng ta có thể biết những nằm trong tính của đối tượng người dùng Active Record gồm. Những biết tin này nó không có vào code model và thông qua các migration nó được tạo thành.

4.2 Các nhiều loại Schema Dump

Có 2 phương pháp để Dump schema. Cách dump thì được setting trong tệp tin config/application.rb của config.active_record.schema_format. Chỉ định sql Hay là :rubyNếu hướng dẫn và chỉ định :ruby thì schema sẽ được lưu giữ sinh sống db/schema.rb. Msinh sống file này còn có chắc chắn hoàn toàn có thể nhận thấy y hệt như là 1 trong bảng migration béo.

class AddInitialProducts Để thêm tài liệu sau khoản thời gian database được tạo thành. Rails tất cả một tính năng có thể giúp quy trình này trsống buộc phải nhanh lẹ. Bằng phương pháp thêm code vào db/seeds.rb với chạy rails db:seed.

5.times bởi |i| Product.create(name: "Product ##i", description: "A sản phẩm.")endBài viết đến đấy là dứt rồi. Hi vọng bài viết hoàn toàn có thể giúp ích cho bạn, giúp bạn hiểu rộng về migration.!

Nguồn tđắm say khảo:http://edgeguides.rubyonrails.org/active_record_migrations.html#changing-existing-migrations

Leave a Reply

Your email address will not be published. Required fields are marked *

CÙNG CHUYÊN MỤC MỚI

  • Aniki là gì

  • Grammar nazi là gì

  • Soft swing là gì

  • #4621: cream pie là gì vậy mấy thím?

  • x

    Welcome Back!

    Login to your account below

    Retrieve your password

    Please enter your username or email address to reset your password.