Tạo model Article và chạy migrate trong ruby on rails

Lượt xem: 2286

Một model (mô hình) là một class Ruby được sử dụng để biểu diễn dữ liệu. Ngoài ra, các model có thể tương tác với cơ sở dữ liệu của ứng dụng thông qua một tính năng của Rails được gọi là Active Record.

Chúng ta sẽ tạo ra model Article với 2 field title kiểu string và filed body kiểu text bằng câu lệnh sau:
 

$ docker-compose run --rm app rails generate model Article title:string body:text

Trường hợp bạn chạy ruby on rails trực tiếp trên windows mà không sử dụng docker. Hoặc remote vào container app thì chạy lệnh sau:
 


$ bin/rails generate model Article title:string body:text

Lưu ý: Tên model là số ít, bởi vì một model khởi tạo đại diện cho một bản ghi dữ liệu. Để giúp ghi nhớ quy ước này, hãy nghĩ xem bạn sẽ gọi hàm tạo của model như thế nào: chúng ta muốn viết Article.new(...), chứkhông phải Articles.new(...).

Sau khi chạy lệnh trên sẽ sinh ra một số file sau:
 


invoke  active_record
create    db/migrate/_create_articles.rb
create    app/models/article.rb
invoke    test_unit
create      test/models/article_test.rb
create      test/fixtures/articles.yml

Database Migrations

Migrations được sử dụng để thay đổi cấu trúc cơ sở dữ liệu của ứng dụng. Trong các ứng dụng Rails, các lần migration được viết bằng Ruby để chúng có thể không phụ thuộc vào cơ sở dữ liệu.

Chúng ta hãy xem nội dung của tệp migration mới của chúng ta:


class CreateArticles < ActiveRecord::Migration[7.0]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

Lệnh gọi create_table chỉ định cách xây dựng bảng bài viết. Theo mặc định, phương thức create_table thêm cột id làm khóa chính tăng tự động. Vì vậy, bản ghi đầu tiên trong bảng sẽ có id là 1, bản ghi tiếp theo sẽ có id là 2, v.v.

Bên trong khối create_tablehai cột được xác địnhtitle and body.

Trên dòng cuối cùng của khối là lệnh gọi t.timestamps. Phương thức này định nghĩa hai cột bổ sung có tên là created_at và updated_at. Như chúng ta sẽ thấy, Rails sẽ quản lý những thứ này cho chúng ta, thiết lập các giá trị khi chúng ta tạo hoặc cập nhật một đối tượng model.

Chạy migrate bằng lệnh sau:
 


$ docker-compose run --rm app rails db:migrate

Hoặc lệnh sau nếu bạn sử dụng rails trực tiếp trên windows
 


$ bin/rails db:migrate

Lệnh sẽ hiển thị đầu ra cho biết bảng đã được tạo:


==  CreateArticles: migrating ===================================
-- create_table(:articles)
   -> 0.0018s
==  CreateArticles: migrated (0.0018s) ==========================

Video thao tác cùng dandev