Ruby on Rails - 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,
- ánh xạ hàng 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 một 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 các thiết kế đơn giản và ánh xạ chuyển tiếp 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ột mô hình miền sang SQL nói chung là dễ dàng, 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 -
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 đều 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à số hoặc chuỗi).
Tạo tệp ghi hoạt động (Mô hình)
Để 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.
library\> rails script/generate model Book
library\> rails script/generate model Subject
Ở trên rails generate model book lệnh tạo mã tự động như bên dưới:
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.rb và subject.rb chứa một định nghĩa khung 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, Thuộc_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 ở đây, vì một môn học có thể có nhiều sách.
Triển khai xác thực trên mô hình
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í.
Các xác nhận là -
- Giá trị của trường tiêu đề không được NULL.
- Giá trị của trường giá phải là số.
Mở book.rb bên trong app\model subdiractory 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" chống lại việc người dùng nhập thiếu.
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ó những 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ế.