Быстрый ответ
Product.not_deleted.available(args.first)
- это сама именованная область, сформированная путем объединения обеих именованных областей.
scope(:find)
получает условия для именованной области (или комбинации областей), которые вы, в свою очередь, можете использовать для создания новой именованной области.
Итак, к примеру:
named_scope :active, :conditions => 'active = true'
named_scope :not_deleted, :conditions => 'deleted = false'
тогда пишешь
named_scope :active_and_not_deleted, :conditions => 'active = true and deleted = false'
или вы могли бы написать
named_scope :active_and_not_deleted, lambda { self.active.not_deleted.scope(:find) }
что идентично. Я надеюсь, что это проясняет.
Обратите внимание, что это стало проще (чище) в рельсах 3, вы бы просто написали
scope :active_and_not_deleted, active.not_deleted