我对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,...,我如何列出所有这些?
感谢大家的帮助!
答案 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'