:any标志是否覆盖acts_as_taggable_on的tagged_with中的:on(context)标志?

时间:2011-04-04 14:00:32

标签: ruby-on-rails ruby-on-rails-3 acts-as-taggable-on acts-as-taggable

我对flags:on和:any如何在acts_as_taggable_on的“tagged_with”方法中一起工作感到困惑。

例如,如果我有以下用户@ 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”,而不是interest_list),即使我没想到也没有。看来这个标志:任何人都可能覆盖了旗帜:on。有没有办法实际执行我上面描述的过滤器?

另外,一个附带问题是,如何找到方法可用的所有标志?例如,tagged_with有:on,:any,:match_all,...,我如何列出所有这些?

感谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

  

如何找到方法可用的所有标志?

尝试开发“源代码阅读”技能。一个好的第三方库将始终记录the key methods that it expose的可用选项。

答案 1 :(得分:1)

好吧,我找到了问题所在。感谢aurelian指出我为acts_as_taggable_on的来源。 事实证明,修复:任何覆盖:问题已于3月18日在github master上修复。来自rubygem.org的gem还没有包含此修复程序。

所以不要使用以下方法从rubygem.org构建我的应用程序: gem 'acts_as_taggable_on'

我只是直接指向git来源:
 gem 'acts_as_taggable_on', :git => 'git://github.com/mbleigh/acts-as-taggable-on.git'