私はmongodbで作業するためにRailsとmongoidを使用しています。mongdbを使った簡単なブールデータ更新ですか?
通常、Active:Recordで作業する場合、レールには.toggle!メソッドにアクセスできます。単純にdbのブール値フィールドの値を反転することができます。
残念ながら、この方法は、MongoDBのため使用できません。...これは残念なことです
user = User.first
user.toggle!(:admin)
NoMethodError: undefined method `toggle!' for #<User:0x00000100eee700>
と愚かに十分な、私はいくつかの複雑なコードなしで周りを取得する方法を見ていない...
どれでもどのように同じ結果を簡潔に達成するための提案?
おかげで、
アレックス
PS:また問題の一つは、私がフィールドを変更したい場合、それが再び検証を通過するということです...そしてそれがために求めています:パスワードたIドン「Tはそう、DBに保存します。
User.first.admin = !User.first.admin
ても動作しません:(
これは本当に素晴らしいです!正確に私が探していたもの::) sendでその構文を知らなかったのですか?私はそれが正確に何かを確認していないのですか? – Alex
'send'は、オブジェクトにメソッドを送ります(" send message to ")。 '@ foo.bar(:baz)'は '@ foo.send(" bar "、:baz)'と同じです - メソッド名をsendで指定するので、変数などを渡すことができます。これはRubyのメタプログラミングで頻繁に使用されています。 –
ありがとうございます。しかし、徹底的にテストした後、実際にすべての検証をバイパスするわけではありません。私はvalidates_length_of:password、:minimum => 6、:maximum => 40、toggleを使用すると、パスワードの長さにエラーが表示されます:(しかし、validates presencesなどではありません。 attr_accesibleなので、長さのバリデーション以外にはほとんど完璧です。 – Alex