Het ding met het hash-veld is dat het zo dynamisch kan zijn als je wilt. Om te voorkomen dat uw DB-schema vervuilt met onbedoelde velden veroorzaakt door bugs in uw code, is deze functionaliteit standaard uitgeschakeld.
Nee, je zit helemaal niet vast aan het gebruik van 2-staps updates voor je hashes!
[],[]=zijn de sneltoetsen voor read_attribute()
en write_attribute()
en moet worden gebruikt als u Mongoid::Attributes::Dynamic
niet opneemt . Als je $set
. probeert te gebruiken zonder dynamische attributen in te schakelen, krijg je een no-method-fout omdat het je dynamische attributen niet als gedefinieerde attributen ziet.
Als je de bron leest van Mongoid::Kenmerken::Dynamisch dan zou je merken dat dit nodig is om de functionaliteit voor dynamische attributen toe te voegen.
Om de waarden bij te werken door Mongoid::Attributes::Dynamic
. op te nemen je moet deze stappen volgen:
thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable
Anders kunt u dit eenvoudig overslaan als u dit nodig heeft en de waarde-update uitvoeren via de 2-stappenmethode
Ik hoop dat dit enig licht werpt op uw vraag.
Bron:
Rails mongoïde dynamische velden - geen methodefout
Dynamische attributen met rails en mongoid