📜 ⬆️ ⬇️

New in Rails: named scopes

Edge Rails now has the ability to define named filter criteria for searching:
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


Standard Usage:
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])

Besides, these methods can nest:
User.active.recent

does the same thing
User.with_scope (: conditions => {: active => true}) do
User.find (: all,: conditions => ['created_at>?', 1.week.ago])
end

namely: finds all active users registered last week.
To take advantage of this functionality you need to have the latest rails in the vendor.
rake rails: freeze: edge

')

Source: https://habr.com/ru/post/23008/


All Articles