ActAsTaggableOn в mongodb и рельсах 3 - PullRequest
0 голосов
/ 06 февраля 2012

Я хочу добавить функцию тегов в свое приложение.Итак, я использую act_as_taggable_on: https://github.com/mbleigh/acts-as-taggable-on

Я добавил следующую строку мой Gemfile:

gem 'acts-as-taggable-on', '~> 2.2.2'

, и когда я добавляю следующую строку в моей модели пользователя:

acts_as_taggable_on

Это дает мне эту ошибку:

undefined local variable or method `acts_as_taggable_on' for User:Class

Пожалуйста, скажите мне, что я делаю не так?

1 Ответ

6 голосов
/ 06 февраля 2012

Этот гем не будет работать с mongoid и mongodb, потому что он построен для того, чтобы разрешать тегирование с использованием реляционной базы данных с использованием активной записи.

Хорошая новость в том, что это очень просто сделать в монгоиде. Просто добавьте новое поле Array, названное в честь того, что вы перечислили бы как actions_as_taggable_on. Если у вас также есть acts_as_taggable, включите также поле универсальных тегов.

Если бы у вас была модель, которая выглядела бы так:

class User < ActiveRecord::Base
  acts_as_taggable
  acts_as_taggable_on :skills, :interests
end

Вы бы построили это так с mongoid:

class User
  include Mongoid::Document
  field :tags, type: Array
  field :skills, type: Array
  field :interests, type: Array
end

Затем, когда вы захотите сохранить тег, скажем, в качестве интереса, вы сделаете следующее:

@user.interests << 'computers'
...