Question

Je donne les résultats suivants named scope:

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

Il fonctionne très bien comme ça dans le script / console

Article.find_all_that_match_tag(["cooking"])

Mais si je l'utilise comme celui-ci, dans le cadre d'un champ anonyme

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

Je reçois un avertissement, sur la deuxième ligne:

/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

Il fonctionne toujours, mais ce qui cause l'avertissement? et comment puis-je me débarrasser de lui s'il vous plaît?

Était-ce utile?

La solution

Tout d'abord je ne reviendrais probablement pas pris la peine, y compris un champ anonyme sans conditions.

Cela dit, je pense que l'avertissement est dans l'appel à portée a été définie dans le cadre de la chaîne sans argument. Il ne devrait pas être nécessaire, vous avez un champ nommé « de find_all_that_match » que vous devriez être en mesure d'enchaîner simplement des champs précédents, anonymes ou nommés.

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

pourrait également être intéressant d'utiliser une portée plus courte nommée comme « tagged_as » ou simplement « marqués »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top