2012-02-06 4 views
0

Я хочу добавить средство пометки в своем приложении. поэтому я использую acts_as_taggable_on: https://github.com/mbleigh/acts-as-taggable-onActAsTaggableOn in mongodb and rails 3

я добавил следующую строку мой 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 

Просьба сообщить мне, что я делаю неправильно?

ответ

6

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

Хорошей новостью является то, что это очень просто сделать в мангоиде. Просто добавьте новое поле массива, названное в честь того, что вы указали как act_as_taggable_on. Если у вас также есть act_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 

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

+0

Спасибо, это было полезно, но как я могу найти всех пользователей, которые принадлежат к конкретный тег? или все пользователи принадлежат к любому из указанных тегов? Точно так же: User.tagged_with (["awesome", "cool"],: any => true) в act_as_taggable_on? – d34th4ck3r

+2

User.any_in (теги: ["awesome", "cool"]) –

+0

Не могли бы вы рассказать мне, как написать форму для ввода ввода в массив? – d34th4ck3r