使用 MongoID 在 Rails 中标记的好解决方案

发布于 2024-10-27 10:09:23 字数 1539 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梨涡少年 2024-11-03 10:09:23

目前,我使用了一种非常简单的方法,效果很好:只需包含一个 Array 字段。

#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 map/reduce 的性能仍然有点怀疑。我认为该映射/归约可能有更好的解决方案,但尚未找到。

For now, I used a very simple approach, that works very well: Just include an 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

This works, but I am a still a little doubtfull about the performance of the Image.any_in map/reduce. I think there may be a better solution for that map/reduce but have not found it, yet.

咋地 2024-11-03 10:09:23

尝试 mongoid_taggable gem。它确实想要你正在寻找的。

Try mongoid_taggable gem. It does want you are looking for.

琴流音 2024-11-03 10:09:23

mongoid-tags-arent-hard gem 似乎更有能力(并且更积极地维护) )比我见过的其他宝石。

The mongoid-tags-arent-hard gem seems more capable (and more actively maintained) than the other gems I've seen.

甩你一脸翔 2024-11-03 10:09:23

这是一个用于map/reduce和实时聚合策略的“可扩展”解决方案 mongoid_taggable_with_context

here it is a "scalable" solution for map/reduce and real time aggregation strategies mongoid_taggable_with_context

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文