Estoy usando Rails y mongoid para trabajar con mongodb.Actualización booleana simple de datos con mongdb?
Normalmente en rieles cuando se trabaja con Active: Record, tiene acceso al método .toggle! que simplemente le permite invertir el valor de un campo booleano en su db.
Desafortunadamente, este método no está disponible para MongoDB:
user = User.first
user.toggle!(:admin)
NoMethodError: undefined method `toggle!' for #<User:0x00000100eee700>
Esto es lamentable ... y estúpidamente lo suficientemente no veo cómo moverse sin algún código complicado ...
Cualquier sugerencia sobre cómo lograr el mismo resultado de manera concisa?
Gracias,
Alex
PS: también uno de los problemas es que cuando quiero modificar el campo, pasa por la validación de nuevo ... y que está pidiendo el: contraseña cual Don 't guardar en el PP, por lo que:
User.first.admin = !User.first.admin
no va a trabajar incluso :(
Este es realmente impresionante! Exactamente lo que estaba buscando ... :) ¿No sabía esa sintaxis con el envío? No estoy seguro de qué es exactamente? – Alex
'send' invoca un método para (" envía un mensaje a ") un objeto. '@ foo.bar (: baz)' es lo mismo que '@ foo.send (" bar ",: baz)' - ya que especifica el nombre del método con send, puede pasar variables y cosas por el estilo. Esto se usa mucho en la metaprogramación de Ruby. –
Gracias por la explicación. Sin embargo, después de realizar pruebas exhaustivas, en realidad no elude toda la validación. Tengo una validates_length_of: password,: minimum => 6,: maximum => 40, y al usar la barra pasará a través de mí un error en la longitud de la contraseña ... :(Pero no en las presencias validadas, etc. Y se saltea el attr_accesible, etc. por lo que es casi perfecto además de la validación de longitud – Alex