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

StackOverflow https://stackoverflow.com/questions/2494971

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top