Новое в Rails: named scopes

Ruby
В 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
Tags:edge railsrailsruby
Hubs: Ruby
+8
893 3
Comments 3

Popular right now

Программист Ruby on Rails (mid, mid+)
from 101,010 to 160,000 ₽TIQUMRemote job
Ruby on Rails - Middle - Public API
from 150,000 to 180,000 ₽igooodsСанкт-Петербург
Senior Developer Ruby on Rails
from 140,000 to 170,000 ₽EdsteinRemote job
Lead Ruby on Rails developer
from 200,000 to 280,000 ₽ikitlabRemote job
Middle/Junior Developer Ruby on Rails
from 110,000 to 130,000 ₽EdsteinRemote job