Sử dụng một model tương tác với database bằng rails console

Lượt xem: 776

Chúng ta sẽ sử dụng một tính năng của Rails gọi là console. Console là một môi trường mã hóa tương tác như irb, nhưng nó tự động tải Rails và mã ứng dụng của chúng ta.

Hãy chạy console với lệnh:
 


$ docker-compose run --rm app rails console

Hoặc với các bạn chạy rails trực tiếp không qua docker


$ bin/rails console

Bạn sẽ thấy một dấu nhắc irb như:


Loading development environment (Rails 7.0.0)
irb(main):001:0>

Tại dấu nhắc này, chúng ta có thể khởi tạo một đối tượng Article mới:


irb> article = Article.new(title: "Hello Rails", body: "I am on Rails!")

Điều quan trọng cần lưu ý là chúng ta chỉ mới khởi tạo đối tượng này. Đối tượng này hoàn toàn không được lưu vào cơ sở dữ liệu. Nó chỉ có sẵn trong bảng điều khiển vào lúc này. Để lưu đối tượng vào cơ sở dữ liệu, chúng ta phải gọi lưu:


irb> article.save
(0.1ms)  begin transaction
Article Create (0.4ms)  INSERT INTO "articles" ("title", "body", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["title", "Hello Rails"], ["body", "I am on Rails!"], ["created_at", "2020-01-18 23:47:30.734416"], ["updated_at", "2020-01-18 23:47:30.734416"]]
(0.9ms)  commit transaction
=> true

Đầu ra ở trên hiển thị một truy vấn cơ sở dữ liệu INSERT INTO "articles" .... Điều này chỉ ra rằng bài viết đã được chèn vào bảng của chúng ta. Và nếu chúng ta xem lại đối tượng bài viết, chúng ta sẽ thấy một điều thú vị đã xảy ra:


irb> article
=> #<Article id: 1, title: "Hello Rails", body: "I am on Rails!", created_at: "2020-01-18 23:47:30", updated_at: "2020-01-18 23:47:30">

Các thuộc tính id, created_at và updated_at của đối tượng hiện đã được thiết lập. Rails đã làm điều này cho chúng tôi khi chúng tôi lưu đối tượng.

Khi muốn tìm bài viết này từ cơ sở dữ liệu, chúng ta có thể gọi find trên mô hình và chuyển id làm đối số:


irb> Article.find(1)
=> #<Article id: 1, title: "Hello Rails", body: "I am on Rails!", created_at: "2020-01-18 23:47:30", updated_at: "2020-01-18 23:47:30">

Và khi chúng ta muốn lấy tất cả các bài viết từ cơ sở dữ liệu, chúng ta có thể gọi all trên model:


irb< Article.all
=> #>ActiveRecord::Relation [#>Article id: 1, title: "Hello Rails", body: "I am on Rails!", created_at: "2020-01-18 23:47:30", updated_at: "2020-01-18 23:47:30"<]<

Video thao tác cùng dandev nhé