предупреждение при использовании named_scope как части анонимной области видимости - PullRequest
0 голосов
/ 22 марта 2010

У меня есть следующая именованная область:

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"])

я получаю предупреждение, во второй строке:

/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

Это все еще работает, но что вызывает предупреждение? и как мне избавиться от этого, пожалуйста?

1 Ответ

1 голос
/ 23 марта 2010

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

Тем не менее, я думаю, что предупреждение заключается в вызове scoped как части цепочки без аргументов. В этом не должно быть необходимости, у вас есть именованная область видимости "find_all_that_match", которую вы сможете просто подключить к любой предыдущей области, анонимной или именованной.

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

Может также стоить использовать более короткую именованную область видимости, например «tagged_as» или просто «tagged»

...