2011-03-28 19 views
6

MongoID ile Raylarda etiketleme için iyi çözümler nelerdir?MongoID ile Raylarda etiketleme için iyi bir çözüm

O sadece bir belgeye bir karma ya da dizi eklemek için gerçekten basit görünüyor, ama bunun en iyi yaklaşım olup olmadığından emin değilim.

Belki bazı Gem? Veya iç içe geçmiş belgelere sahip basit bir numara? Şimdilik

cevap

3

, çok iyi çalışan çok basit bir yaklaşım, kullandı: Sadece bir Array -Tarla sayılabilir.

#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 

Bu çalışır, ancak ben Image.any_in haritanın performansı hakkında hala biraz doubtfull duyuyorum/azaltır. Bu harita için daha iyi bir çözüm olabileceğini düşünüyorum/buldum ama henüz bulamadım.

3

/harita için "ölçeklenebilir" bir çözümdür.

İlgili konular