Wenn ich einen Gültigkeitsbereich mit einem Lambda habe und abhängig vom Wert des Arguments ein Argument benötigt, weiß ich möglicherweise, dass es keine Übereinstimmungen gibt, möchte aber dennoch eine Beziehung zurückgeben, kein leeres Array:
scope :for_users, lambda { |users| users.any? ? where("user_id IN (?)", users.map(&:id).join(',')) : [] }
Was ich wirklich will, ist eine "none" -Methode, das Gegenteil von "all", die eine Beziehung zurückgibt, die noch verkettet werden kann, aber dazu führt, dass die Abfrage kurzgeschlossen wird.