私はMongodb(Mondoidマッパー)を使って簡単なアプリケーションをレール上に持っています。足場posts
と、評価機能を実装しようとしています。あなたが見ることができるように、2つのフィールドvoter_up
、_down
があるmongodbの配列からオブジェクトを削除する
> class Post
include Mongoid::Document
include Mongoid::Timestamps
field :title, type: String
field :description, type: String
field :rank, type: Integer, default: "0"
field :voter_up, type: Array, default: []
field :voter_down, type: Array, default: []
:Post
は、次の構造を有しています。ユーザーの投票方法に応じてユーザーを追加します。 self.voter_up << user.id
またはself.voter_down << user.id
である。データベースでは、次のようになります。
"voter_up" : [
ObjectId("4ee08b6e405f3d0a29000005"),
ObjectId("4ee0aaff405f3d0a2900003a")
]
そして、ユーザーが自分の考えを変えて逆の投票をしたければ、例えば、初めてユーザーが投票しました。そして、DOWNに投票しました。この状況では、このユーザーを配列voter_up
から削除し、voter_down
に追加する必要があります。レールコンソールからはarray.delete(object)
が動作しますが、それを試してみるとself.voter_up.delete(user.id)
はモデル機能には何も起きません。どうして?
を試してみます、ありがとうございました!私はそれについて忘れた=) – Eugene