Kapsam, koleksiyonun bir alt kümesidir. Sesler karmaşık mı? Öyle değil. Bunu düşünün:
Kullanıcılarınız var. Şimdi, bu Kullanıcılardan bazıları bülteninize abone oluyor. Kullanıcı Veritabanına bir alan ekleyerek bir bülten alan kullanıcıları işaretlediniz (user.subscribed_to_newsletter = true). Doğal olarak, bazen bülteninize abone olan Kullanıcıları almak istersiniz.
Elbette, her zaman yapabilirsiniz:
User.where(subscribed_to_newsletter: true).each do #something
Yerine, her zaman, ancak, böyle bir şey yapabileceğini bu yazı.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Eğer Rails 4 veya yeni kullanıyorsanız, bunun yerine bunu:
User.newsletter.each do #something
Bu:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Bu sadece bu yaparak aboneler erişmesine olanak tanır çok basit bir örnektir, ancak genel kapsamlarda işinizi kolaylaştıracak çok güçlü araçlar olabilir. Bu bağlantıyı dışarı
Kontrol: API Description
olası bir kopyası [Rails içinde adlandırılmış kapsamın önemi nedir?] (Http://stackoverflow.com/questions/2919730/whats-the-significance-of-named-scope-in-rails) – jdl
Bu blog yazısı adlandırılmış kapsamları öğrenirken benim için çok değerliydi: http://ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –
Ryandaigle bağlantısı şimdi bulundu burada: http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –