質問

私は、次の名前付きスコープを持っています

named_scope :find_all_that_match_tag, lambda { |tags| {
            :select => "articles.id, tags.name",
            :joins => :tags,
            :conditions => ["tags.name IN (?)",tags]}
          }

これはスクリプト/コンソール

で、次のように細かい動作します
Article.find_all_that_match_tag(["cooking"])

しかし、私は匿名のスコープの一環として、このようにそれを使用する場合は、

scope = Article.scoped({})
scope = scope.scoped.find_all_that_match_tag(["cooking"])

私は2番目の行に、警告を受けるます:

/Users/Server/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/named_scope.rb:13: warning: multiple values for a block parameter (0 for 1)
from /Users/Server/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/named_scope.rb:92

それはまだ動作しますが、いただきましたが、警告の原因?そしてどのように私はそれを取り除くようにしてください?

役に立ちましたか?

解決

私はおそらく、条件なしの匿名の範囲を含めて気にしないだろうまずはます。

と、私は警告が引数なしでチェーンの一部としてスコープへの呼び出しであると思います。それはあなたが単に以前のスコープにチェーン、匿名または名前付きのことができるようにすべきであるという名前のスコープ「find_all_that_match」を持って、必要はありません。

scope = Article.scoped({})
scope.find_all_that_match_tag(["cooking"])
また、「tagged_as」または単にのような短い名前のスコープを使用する価値は

「タグ付け」する可能性があります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top