Главная страница

Edge Rails: named_scope

18:26, 2008-04-05 [ ru ]

В 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

Нет комментариев.

Войдите с помощью OpenID чтобы опубликовать комментарий.
Strio