MongoID를 사용하여 레일스를 태그 지정하는 좋은 해결책은 무엇입니까?MongoID를 사용하여 레일스에 태그를 지정하는 좋은 방법
해시 또는 배열을 문서에 추가하는 것은 정말 간단하지만 가장 좋은 방법인지는 확실하지 않습니다.
일부 보석입니까? 또는 중첩 된 문서로 간단한 트릭을 할 수 있습니까?
MongoID를 사용하여 레일스를 태그 지정하는 좋은 해결책은 무엇입니까?MongoID를 사용하여 레일스에 태그를 지정하는 좋은 방법
해시 또는 배열을 문서에 추가하는 것은 정말 간단하지만 가장 좋은 방법인지는 확실하지 않습니다.
일부 보석입니까? 또는 중첩 된 문서로 간단한 트릭을 할 수 있습니까?
지금은 아주 간단한 접근 방식을 사용했는데 매우 잘 작동합니다. 바로 Array
-field를 포함하십시오.
#app/models/image.rb
class Image
include Mongoid::Document
include Mongoid::Timestamps
field :message, :type => String
field :tags, :type => Array
def self.images_for tag
Image.any_in(:tags => [tag])
end
end
#routes.rb
match "tag/:tag" => "images#tag"
#/app/controller/images_controller.rb
class ImagesController < ApplicationController
# GET /tag
# GET /tag.xml
def tag
@images = Image.images_for params[:tag]
respond_to do |format|
format.html { render "index" }
format.xml { render :xml => @images }
end
end
end
그래도 작동하지만 Image.any_in 맵/축소의 성능에 대해서는 여전히 조금 의심 스럽습니다. 그지도에 대한 더 나은 해결책이있을 수 있습니다/줄일 수 있지만 아직 그것을 찾지 못했습니다.
시도 mongoid_taggable 보석. 너를 찾고 싶어.
여기는 mongoid-tags-arent-hard 보석이 내가 본 다른 보석보다 더 많은 수 (더 적극적으로 유지) 것 같다 줄이고 실시간으로 집계 전략 mongoid_taggable_with_context
/지도에 대해 "확장"솔루션입니다.