Mongoidはダイナミックフィールドをサポートするようになりました。それらのドキュメントはここにあります:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
基本的に、ドキュメントに存在しなかったフィールドにgetterメソッドとsetterメソッドを使用しようとすると、メソッドエラーが発生しないため、動的フィールドの設定方法に少し注意する必要があることを警告します。
[]、[] =はread_attribute()、write_attribute()のショートカットであり、dynamic_attributes = true
を設定しない場合に使用する必要があります ./config/mongoid.yml file
、それ以外の場合は、メソッドエラーは発生しません。
allow_dynamic_fields: true
の設定 コードのバグが原因で意図しないフィールドでデータ/スキーマを汚染する可能性があるため、リスクが伴う可能性があります。これをfalse
に設定する方がおそらく安全です 明示的に[]、[] =
# 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")