Предупреждение при использовании 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"