Новое в Rails: named scopes

    В Edge Rails появилась возможность определять именованые условия-фильтры для поиска:
    class User < ActiveRecord::Base
    named_scope :active, :conditions => {:active => true}
    named_scope :inactive, :conditions => {:active => false}
    named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
    end


    Стандартное использоваине:
    User.active
    # = User.find(:all, :conditions => {:active => true})
    User.inactive
    # = User.find(:all, :conditions => {:active => false})
    User.recent
    # = User.find(:all, :conditions => ['created_at > ?', 1.week.ago])

    К тому-же эти методы умеют гнездится:
    User.active.recent

    делает то-же, что
    User.with_scope(:conditions => {:active => true}) do
    User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
    end

    а именно: находит всех активных пользователей зарегистрированных на прошлой неделе.
    Чтобы воспользоваться этой функциональностью нужно иметь последние рельсы в vendor.
    rake rails:freeze:edge
    Поделиться публикацией

    Похожие публикации

    Комментарии 3

      +2
      это интеграция плагина has_finder(http://pivotalrb.rubyforge.org/svn/has_f…) Для тех кто не хочет переезжать на EDGE.
        0
        Хм... Удобно... Это случаем не тормозит?
          0
          Отлично, а я и не знал.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое