RAILS VIRTUAL ATTRIBUTES
Bài đăng này đã không được cập nhật trong 7 năm
Hôm nay mình giới thiệu với các bạn cách tạo virtual attribute đơn giản cho rails
1. Giới thiệu:
- Giả sử ta có table user có 2 column là
first_namevàlast_name, để tạo table user ta chạy câu lệnh migrate như sau:rails g modal user first_name:string last_name:string - Khi đó, để đăng ký mới user, người dùng cần điền 2 field trên form đăng ký người dùng ứng với 2 cột first_name và last_name.
- Để tiện cho người dùng, ta sử dụng virtual_attribute
full_namethay thế cho 2 attribute first_name và last_name
2. Cài đặt và validate:
-
Trong file model user.rb, ta khai báo các
gettervàsettercho virtual_attributefull_nameclass User < ApplicationRecord def full_name [first_name, last_name].join(" ") end! def full_name=(name) first_name_and_last_name = name.split(" ") update_attributes first_name: first_name_and_last_name[0] update_attributes last_name: first_name_and_last_name[1] end end -
Sử dụng rails console để kiểm tra các setter và getter của virtual_attributes full_name.
-
Kết quả như sau:
Tạo user sử dụng attribute first_name là last_name như bình thường

Tạo user sử dụng virtual attribute full_name

-
Để thực hiện
validatescho virtual_attribute, ta thực hiện tương tự như khi validate cho các attribute bình thường. -
Trong ví dụ như sau, thực hiện validates full_name với min length là 10 kí tự, first_name, last_name phải tồn tại
validates :first_name, presence: true validates :last_name, presence: true validates :full_name, length: {minimum: 10} -
Sử dụng rails console để kiểm tra các validation vừa được tạo
-
Kết quả như sau:
Tạo user không có first_name:

Tạo user không có last_name:

Tạo user có full_name ngắn hơn 10 kí tự:

-
Từ đây ta có thể sử dụng virtual_attribute
full_namenhư 1 attribute bình thường trong các hàmnew,create,update,validates... như các attributefirst_name,last_name.
All rights reserved