Tạo model Article và chạy migrate trong ruby on rails
Lượt xem: 2462
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_table
, hai cột được xác định: title
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