Sto usando Rails e mongoid per lavorare con mongodb.Aggiornamento semplice di dati booleani con mongdb?
Di solito in binari quando si lavora con Active: Record, si ha accesso al metodo .toggle! che ti permette semplicemente di invertire il valore di un campo booleano nel tuo db.
Purtroppo questo metodo non è disponibile per MongoDB:
user = User.first
user.toggle!(:admin)
NoMethodError: undefined method `toggle!' for #<User:0x00000100eee700>
Questo è un peccato ... e abbastanza stupidamente non vedo come muoversi senza un codice complicato ...
Qualsiasi suggerimento su come ottenere lo stesso risultato in modo conciso?
Grazie,
Alex
ps: anche uno dei problemi è che quando voglio modificare il campo, si passa attraverso la convalida di nuovo ... ed è chiedere la Password che io don 't salvare nel db, quindi:
User.first.admin = !User.first.admin
non funziona anche :(
Questo è davvero impressionante! Esattamente quello che stavo cercando ... :) Non sapevo che sintassi con invio? Non sono sicuro di cosa faccia esattamente? – Alex
'send' invoca un metodo per (" invia un messaggio a ") un oggetto. '@ foo.bar (: baz)' è lo stesso di '@ foo.send (" bar ",: baz)' - poiché si specifica il nome del metodo con send, si possono passare variabili e così via. Questo è molto usato nella metaprogrammazione di Ruby. –
Grazie per la spiegazione. Tuttavia, dopo aver provato a fondo, in realtà non ignora tutte le convalide. Ho un validates_length_of: password,: minimum => 6,: maximum => 40, e l'utilizzo del commutatore mi farà passare un errore sulla lunghezza della password ... :(Ma non sulle presenze valide, ecc. E salta il attr_accesible, ecc. quindi è quasi perfetto oltre alla convalida della lunghezza – Alex