在mongodb和rails 3中的ActAsTaggableOn

d34*_*k3r 0 mongodb acts-as-taggable-on mongoid ruby-on-rails-3

我想在我的应用程序中添加标记工具.所以,我正在使用acts_as_taggable_on:https://github.com/mbleigh/acts-as-taggable-on

我添加了以下行我的Gemfile:

gem 'acts-as-taggable-on', '~> 2.2.2'
Run Code Online (Sandbox Code Playgroud)

当我在我的用户模型中添加以下行时:

acts_as_taggable_on
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

undefined local variable or method `acts_as_taggable_on' for User:Class
Run Code Online (Sandbox Code Playgroud)

请告诉我,我做错了什么?

Tyl*_*ock 6

该gem不适用于mongoid和mongodb,因为它是为了允许使用活动记录使用关系数据库进行标记而构建的.

好消息是,在mongoid中这很简单.只需添加一个以您列出的act_as_taggable_on命名的新数组字段.如果您还有acts_as_taggable,也请包含通用标记字段.

如果您打算使用如下所示的模型:

class User < ActiveRecord::Base
  acts_as_taggable
  acts_as_taggable_on :skills, :interests
end
Run Code Online (Sandbox Code Playgroud)

你会用mongoid像这样构建它:

class User
  include Mongoid::Document
  field :tags, type: Array
  field :skills, type: Array
  field :interests, type: Array
end
Run Code Online (Sandbox Code Playgroud)

然后,当您想要保存标记时,请假设您感兴趣,您将执行以下操作:

@user.interests << 'computers'
Run Code Online (Sandbox Code Playgroud)