Věc s hashovým polem je, že může být dynamické, jak chcete. Proto je tato funkce ve výchozím nastavení zakázána, aby se zabránilo znečištění vašeho schématu DB nechtěnými poli způsobenými chybami ve vašem kódu.
Ne, s používáním dvoufázových aktualizací pro vaše hashe vůbec nezůstáváte!
[],[]=jsou zkratky pro read_attribute()
a write_attribute()
a měl by být použit, pokud nezahrnujete Mongoid::Attributes::Dynamic
. Pokud se pokusíte použít $set
bez povolení dynamických atributů dostanete chybu bez metody, protože vaše dynamické atributy nevidí jako definované atributy.
Pokud si přečtete zdroj Mongoid::Atributy::Dynamický pak byste zjistili, že je to nutné pro přidání funkce dynamických atributů.
Chcete-li aktualizovat hodnoty zahrnutím Mongoid::Attributes::Dynamic
musíte postupovat podle těchto kroků:
thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable
V opačném případě, pokud potřebujete, můžete toto snadno přeskočit a provést aktualizaci hodnoty metodou ve dvou krocích
Doufám, že to trochu osvětlí váš dotaz.
Zdroj:
Mongoidní dynamická pole kolejnic – žádná chyba metody
Dynamické atributy s Rails a Mongoid