Masalahnya dengan bidang Hash adalah, itu bisa dinamis sebanyak yang Anda inginkan. Oleh karena itu untuk mencegah pencemaran skema DB Anda dengan bidang yang tidak diinginkan yang disebabkan oleh bug dalam kode Anda, fungsi ini dinonaktifkan secara default.
Tidak, Anda tidak terjebak menggunakan pembaruan 2 langkah untuk hash Anda sama sekali!
[],[]=adalah pintasan untuk read_attribute()
dan write_attribute()
dan harus digunakan jika Anda tidak menyertakan Mongoid::Attributes::Dynamic
. Jika Anda mencoba menggunakan $set
tanpa mengaktifkan atribut dinamis, Anda akan mendapatkan kesalahan tanpa metode karena atribut dinamis Anda tidak terlihat sebagai atribut yang ditentukan.
Jika Anda membaca sumber Mongoid::Atribut::Dinamis maka Anda akan menemukan bahwa ini diperlukan untuk menambahkan fungsionalitas atribut dinamis.
Untuk memperbarui nilai dengan menyertakan Mongoid::Attributes::Dynamic
Anda harus mengikuti langkah-langkah berikut:
thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable
Jika tidak, jika perlu, Anda dapat dengan mudah melewati ini dan melakukan pembaruan nilai dengan metode 2 langkah
Saya harap ini menjelaskan pertanyaan Anda.
Sumber:
Rel bidang dinamis mongoid - tidak ada kesalahan metode
Atribut dinamis dengan Rails dan Mongoid