Mongodb (Mondoid 매퍼)가있는 레일에 간단한 응용 프로그램이 있습니다. Scaffold posts
, 그리고 등급 기능을 구현하려고합니다. 당신이 볼 수 있듯이 두 개의 필드 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")
]
그리고 사용자가 마음을 바꾸어 반대로 투표를 원할 경우. 예를 들어 처음으로 사용자가 투표를 UP했습니다. 그리고 DOWN으로 투표했습니다. 이 상황에서 배열 voter_up
에서이 사용자를 삭제하고 voter_down
에 추가해야합니다. 레일 콘솔에서 그것은 array.delete(object)
을 작동하지만 모델 기능에서 self.voter_up.delete(user.id)
을 시도하면 아무 일도 일어나지 않습니다. 왜?
오 시도가,이 작동합니다 생각 고맙습니다! 나는 그것을 잊었다 =) – Eugene