Theo mặc định, ActiveRecord lấy tất cả các trường từ bảng cơ sở dữ liệu tương ứng và tạo các thuộc tính công khai cho tất cả chúng.Có cách nào để biến các thuộc tính Rails ActiveRecord thành riêng tư không?
Tôi nghĩ rằng nó hợp lý không phải để đặt tất cả các thuộc tính trong một mô hình công khai. Thậm chí nhiều hơn, phơi bày các thuộc tính có nghĩa là để sử dụng nội bộ làm lộn xộn giao diện của mô hình và vi phạm nguyên tắc đóng gói.
Vì vậy, có cách nào để làm cho một số thuộc tính theo nghĩa đen là private
không?
Hoặc, có lẽ tôi nên chuyển sang một số ORM khác?
Bất kỳ lý do nào tại sao tôi không/không thể sử dụng những điều sau đây để thực hiện việc này? riêng attr_accessor my_private_attribute –
@TC: vì những người đó sẽ không thực sự theo dõi các thuộc tính một cách chính xác. phương thức write_attribute/read_attribute là cách bạn giao tiếp với active_record –
thực sự, write_attribute sẽ không tồn tại giá trị cho DB. Người ta sẽ phải gọi self.save sau đó để thực sự cập nhật hồ sơ trong DB. – Magne