2016-04-04 16 views
2

Rails 5 uygulamasında, app/services içinde özel sınıflar var ve mevcut alt etki alanına erişmem gerekiyor.Özel sınıflardan 'istek' nesnesine (veya benzeri) nasıl erişirsiniz?

... 
def self.is_valid? req 
    blacklist.exclude? req.subdomain 
end 

Ama bu request her zaman geçmesi gerekir gelir:

Şu anda, bireysel yöntemler bu gibi görünebilir. Bu optimal değil, bu yüzden sınıfın içinden raylara request nesnesine nasıl erişeceğinizi merak ediyorum.

+0

Bir denetleyicideki 'request' öğesinin yalnızca istek nesnesini döndüren bir yöntem olduğunu unutmayın, değişken değildir. –

cevap

2

İstek nesnesine, yalnızca denetleyiciden ve görünümden erişilebilir. İsteği, başka herhangi bir nesne (bağımlılık enjeksiyonu) gibi ihtiyaç duyan yöntemlere iletebilirsiniz, ancak hizmet nesnesinin tüm istek nesnesine gerçekten ihtiyacı var mı? Neden sadece alt alan dizgisini geçirmiyorsunuz? Benim düşünceme göre, hizmet nesnelerine istek nesnesini bilmesi gerekmemelidir, çünkü bu tür bir davranış muhtemelen bir denetleyici yönteminden daha iyi ele alınacaktır.

1

Evet, denetleyiciye özgü bir yöntemdir ve başka bir yerde bağımsız değişken olarak geçmesi gerekir. Bu, Rails'in oluşturduğu yoldur - global değişkenler tüm müşteriler arasında paylaşılacak ve denetleyiciler her istemci için ayrı ayrı oluşturulacaktır. Bu nedenle, şu anda bağlı olan tüm kullanıcıları listelemek için global "istek" nesnesi yoktur ve yerleşik bir yol yoktur.

İlgili konular