0

私は、acts_as_taggable_onの「tagged_with」メソッドでフラグ:onと:anyがどのように連携するかについて混乱しています。

たとえば、次のユーザー@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(interest_listではなくskill_listに「2」が含まれている)が返されることですが、何も期待していませんでした。フラグ:anyがフラグ:onを上書きした可能性があります。上記のフィルターを実際に実行する方法はありますか?

また、副次的な質問は、メソッドで使用可能なすべてのフラグをどのように見つけるかということです。たとえば、taged_withには:on、:any、:match_all、...がありますが、それらすべてを一覧表示するにはどうすればよいですか?

皆さん、助けてくれてありがとう!

4

2 に答える 2

1

メソッドで使用可能なすべてのフラグをどのように見つけますか?

「ソースコードの読み取り」スキルを身に付けてみてください。優れたサードパーティライブラリは、公開する主要なメソッドで利用可能なオプションを常に文書化します。

于 2011-04-04T15:05:55.223 に答える
1

さて、問題がどこにあるかを見つけました。acts_as_taggable_onのソースを教えてくれたaurelianに感謝します。githubマスターで3月18日の時点で、:any overwriting:onの問題の修正が修正されたことが判明しました。そして、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'

于 2011-04-06T13:40:30.567 に答える