Frage

Ich habe folgende genannt -umfang:

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

Es funktioniert gut, wie dies in Skript / console

Article.find_all_that_match_tag(["cooking"])

Aber wenn ich es so verwenden, als Teil eines anonymen Rahmen

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

i eine Warnung erhalten, in der zweiten Zeile:

/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

Es funktioniert immer noch, aber was verursacht die Warnung? und wie kann ich es loszuwerden bitte?

War es hilfreich?

Lösung

Zu allererst würde ich wahrscheinlich nicht ohne Bedingungen, einschließlich einem anonymen Umfang stören.

Das heißt, ich glaube, die Warnung in dem Aufruf ist als Teil der Kette ohne Argument scoped. Es sollte nicht nötig sein, müssen Sie eine benannte scope „find_all_that_match“, dass Sie einfach Kette alle bisherigen Bereiche der Lage sein sollten, anonym oder benannt.

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

Könnte auch sein, lohnt sich der Einsatz einen kürzeren Namen Umfang wie „tagged_as“ oder einfach „getaggt“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top