Предупреждение при использовании named_scope как части анонимной области видимости

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

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 ответ

Решение

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

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

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

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

Другие вопросы по тегам