تحذير عند استخدام named_scope كجزء من نطاق مجهول
-
21-09-2019 - |
سؤال
لدي النطاق التالي المسمى:
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" أو ببساطة "الموسومة"
لا تنتمي إلى StackOverflow