Перезаписывает ли флаг: any флаг: on (context) в метке act_as_taggable_on с тегом_with? - PullRequest
0 голосов
/ 04 апреля 2011

Я запутался с тем, как флаги: on и: any работают вместе в методе "tagged_with" actions_as_taggable_on.

Например, если у меня есть следующие пользователи @ user1 и @ user2:

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

@user1 = User.new(:name => "Bobby")
@user1.interest_list = "1, 15"     
@user1.skill_list = "2, 17"
@user1.save

@user2 = User.new(:name => "Al")
@user2.interest_list = "3, 10"     
@user2.skill_list = "4, 6"
@user2.save

Когда я хочу, чтобы все пользователи, в список интересов которых был включен какой-либо тег ["2", "50"], я попробовал это:

User.tagged_with(["2", "50"], :on => :interests, :any => true)

Проблема в том, что я получаю обратно @ user1 (в списке skill_list есть «2», а не list_list), хотя я этого и не ожидал. Кажется, флаг: любой мог перезаписать флаг: вкл. Есть ли способ на самом деле выполнить фильтр, который я описал выше?

Кроме того, дополнительный вопрос: как найти все флаги, доступные для метода? Например, tagged_with имеет: on,: any,: match_all, ..., как мне перечислить их все?

Спасибо всем за помощь!

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Хорошо, я нашел, где проблема. Спасибо Аврелиану за то, что он указал мне на источник act_as_taggable_on. Оказалось, что исправление: любая перезапись: в выпуске было исправлено с 18 марта на github master. А камень от rubygem.org пока не содержит этого исправления.

Так что вместо того, чтобы собирать мое приложение из rubygem.org, используйте gem 'acts_as_taggable_on'

Я просто указываю на источник git:
gem 'acts_as_taggable_on', :git => 'git://github.com/mbleigh/acts-as-taggable-on.git'

1 голос
/ 04 апреля 2011

как найти все флаги, доступные для метода?

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

...