Ruby on Rails 2.1 - Mô hình bản ghi hoạt động

Rails Active Record là lớp đối tượng / ánh xạ quan hệ (ORM) được cung cấp cùng với Rails. Nó tuân theo chặt chẽ mô hình ORM tiêu chuẩn, như sau:

  • bảng ánh xạ đến các lớp học,

  • các hàng ánh xạ tới các đối tượng và

  • các cột ánh xạ đến các thuộc tính đối tượng.

Rails Active Records cung cấp giao diện và ràng buộc giữa các bảng trong cơ sở dữ liệu quan hệ và mã chương trình Ruby thao tác với các bản ghi cơ sở dữ liệu. Tên phương thức Ruby được tạo tự động từ tên trường của bảng cơ sở dữ liệu.

Mỗi đối tượng Active Record có CRUD (Create, Read, Update, và Delete) các phương pháp để truy cập cơ sở dữ liệu. Chiến lược này cho phép thiết kế đơn giản và ánh xạ đơn giản giữa các bảng cơ sở dữ liệu và các đối tượng ứng dụng.

Dịch mô hình miền sang SQL

Việc dịch mô hình miền sang SQL nói chung là đơn giản, miễn là bạn nhớ rằng bạn phải viết SQL thân thiện với Rails. Về mặt thực tế, bạn phải tuân theo các quy tắc nhất định như -

  • Mỗi thực thể (chẳng hạn như sách) nhận được một bảng trong cơ sở dữ liệu được đặt theo tên của nó, nhưng ở số nhiều (sách).

  • Mỗi bảng đối sánh thực thể như vậy có một trường gọi là id, trường này chứa một số nguyên duy nhất cho mỗi bản ghi được chèn vào bảng.

  • Cho thực thể x và thực thể y, nếu thực thể y thuộc thực thể x thì bảng y có một trường gọi là x_id.

  • Phần lớn các trường trong bất kỳ bảng nào, lưu trữ các giá trị cho các thuộc tính đơn giản của thực thể đó (bất kỳ thứ gì là một số hoặc một chuỗi).

Tạo tệp ghi hoạt động

Để tạo tệp Bản ghi Hoạt động cho các thực thể của chúng tôi cho ứng dụng thư viện, được giới thiệu trong chương trước, hãy phát hành lệnh sau từ cấp cao nhất của thư mục ứng dụng.

C:\ruby\library\> ruby script/generate model Book
C:\ruby\library\> ruby script/generate model Subject

Bạn đang yêu cầu trình tạo tạo các mô hình có tên là Sách và Chủ đề để lưu trữ các bản sao của sách và chủ đề. Chú ý rằng bạn đang viết hoa Book and Subject và sử dụng dạng số ít. Đây là một mô hình Rails mà bạn nên tuân theo mỗi khi tạo một mô hình.

Khi bạn sử dụng công cụ tạo, Rails sẽ tạo tệp mô hình thực tế chứa tất cả các phương thức duy nhất cho mô hình và các quy tắc nghiệp vụ mà bạn xác định, tệp kiểm tra đơn vị để thực hiện phát triển theo hướng kiểm tra, tệp dữ liệu mẫu (được gọi là đồ đạc) để sử dụng với các bài kiểm tra đơn vị và di chuyển Rails giúp tạo bảng và cột cơ sở dữ liệu dễ dàng.

Ngoài việc tạo nhiều tệp và thư mục khác, điều này sẽ tạo ra các tệp có tên book.rbsubject.rb chứa một định nghĩa bộ xương trong app/models danh mục.

Nội dung có trong book.rb -

class Book < ActiveRecord::Base
end

Nội dung có sẵn trong subject.rb

class Subject < ActiveRecord::Base
end

Tạo liên kết giữa các mô hình

Khi bạn có nhiều hơn một mô hình trong ứng dụng Rails của mình, bạn sẽ cần tạo kết nối giữa các mô hình đó. Bạn có thể làm điều này thông qua các hiệp hội. Active Record hỗ trợ ba loại liên kết -

  • one-to-one- Mối quan hệ một-một tồn tại khi một mặt hàng có chính xác một mặt hàng khác. Ví dụ, một người có đúng một ngày sinh nhật hoặc một con chó có đúng một người chủ.

  • one-to-many- Mối quan hệ một - nhiều tồn tại khi một đối tượng duy nhất có thể là thành viên của nhiều đối tượng khác. Ví dụ, một môn học có thể có nhiều sách.

  • many-to-many - Mối quan hệ nhiều-nhiều tồn tại khi đối tượng thứ nhất có liên quan đến một hoặc nhiều đối tượng thứ hai và đối tượng thứ hai liên quan đến một hoặc nhiều đối tượng thứ nhất.

Bạn chỉ ra các liên kết này bằng cách thêm khai báo vào các mô hình của mình - has_one, has_many, own_to và has_and_belongs_to_many.

Bây giờ bạn cần cho Rails biết những mối quan hệ nào bạn muốn thiết lập trong hệ thống dữ liệu thư viện. Để làm như vậy, hãy sửa đổi book.rb và subject.rb để trông như thế này -

class Book < ActiveRecord::Base
  belongs_to :subject
end

Chúng tôi đã sử dụng một chủ đề số ít trong ví dụ trên, vì một Sách có thể thuộc về một Chủ đề duy nhất.

class Subject < ActiveRecord::Base
  has_many :books
end

Chúng tôi đã sử dụng sách số nhiều trong ví dụ trên, vì một môn học có thể có nhiều sách.

Triển khai xác thực

Việc thực hiện xác nhận được thực hiện trong một mô hình Rails. Dữ liệu bạn đang nhập vào cơ sở dữ liệu được xác định trong mô hình Rails thực tế, vì vậy chỉ có ý nghĩa khi xác định dữ liệu hợp lệ nào đòi hỏi ở cùng một vị trí.

Mở book.rb và đặt các xác nhận sau:

class Book < ActiveRecord::Base
  belongs_to :subject
  validates_presence_of :title
  validates_numericality_of :price, :message=>"Error Message"
end
  • validates_presence_of - Bảo vệ các trường "NOT NULL" khỏi bị thiếu thông tin nhập của người dùng.
  • validates_numericality_of - Ngăn người dùng nhập dữ liệu không phải dạng số.

Bên cạnh các xác nhận được đề cập ở trên, có một số xác nhận phổ biến khác. Kiểm tra Hướng dẫn nhanh về Rails .

Tiếp theo là gì?

Trong chương tiếp theo, chúng ta sẽ tìm hiểu Rails Migration, cho phép bạn sử dụng Ruby để xác định các thay đổi đối với lược đồ cơ sở dữ liệu của bạn, giúp bạn có thể sử dụng hệ thống kiểm soát phiên bản để giữ cho mọi thứ được đồng bộ hóa với mã thực tế.