Używam Rails i mongoid do pracy z mongodb.Prosta aktualizacja danych boolowskich za pomocą mongdb?
Zwykle na szynach podczas pracy z Active: Record, masz dostęp do metody .toggle! co pozwala po prostu odwrócić wartość pola boolowskiego w bazie danych.
Niestety metoda ta nie jest dostępna dla MongoDB:
user = User.first
user.toggle!(:admin)
NoMethodError: undefined method `toggle!' for #<User:0x00000100eee700>
Jest to niefortunne wystarczająco głupio ... i nie widzę w jaki sposób obejść bez jakiegoś skomplikowanego kodu ...
Wszelkie sugestia, jak osiągnąć ten sam wynik w zwięzły sposób?
Dzięki,
Alex
PS: też jednym z problemów jest to, że gdy chcę zmodyfikować pole, to przechodzi walidacji ponownie ... i to z prośbą o: hasło, które ja don „t zapisać w db, więc:
User.first.admin = !User.first.admin
nawet nie będzie działać :(
To jest naprawdę niesamowite! Dokładnie to, czego szukałem ... :) Nie znałem tej składni z wysyłką? Nie jestem pewien, co dokładnie robi? – Alex
'send' wywołuje metodę do (" wysyła wiadomość do ") obiektu. '@ foo.bar (: baz)' jest takie samo jak '@ foo.send (" bar ",: baz)' - ponieważ określasz nazwę metody za pomocą send, możesz przekazywać zmienne i tym podobne. Jest to mocno wykorzystywane w metaprogramowaniu Ruby. –
Dzięki za wyjaśnienie. Jednak po dokładnym testowaniu w rzeczywistości nie omija ona wszystkich walidacji. Mam validates_length_of: password,: minimum => 6,: maximum => 40, a użycie przełącznika spowoduje ode mnie błąd w długości hasła ... :(ale nie w potwierdzeniu obecności itp. Pominie to attr_accesible, itp. więc jest prawie doskonały poza sprawdzaniem długości – Alex