Mongoid hiện hỗ trợ Trường động. Tài liệu của họ có thể được tìm thấy tại đây:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
Về cơ bản, nó cảnh báo rằng bạn phải cẩn thận một chút trong cách đặt các trường động vì nó sẽ gây ra lỗi không có phương thức nếu bạn cố gắng sử dụng các phương thức getter và setter cho một trường không tồn tại trong tài liệu.
[], [] =là các phím tắt cho read_attribute (), write_attribute () và sẽ được sử dụng nếu bạn không đặt dynamic_attributes = true
trong tệp ./config/mongoid.yml file
của bạn , nếu không, bạn sẽ gặp lỗi không có phương pháp.
Đặt allow_dynamic_fields: true
có thể rủi ro, vì bạn có thể gây ô nhiễm dữ liệu / lược đồ của mình với các trường không mong muốn do lỗi trong mã của bạn gây ra. Có lẽ sẽ an toàn hơn nếu đặt giá trị này thành false
và sử dụng rõ ràng [], [] =
# Raise a NoMethodError if value isn't set.
person.gender
person.gender = "Male"
# Retrieve a dynamic field safely.
person[:gender]
person.read_attribute(:gender)
# Write a dynamic field safely.
person[:gender] = "Male"
person.write_attribute(:gender, "Male")