Benim kullanım durumum aşağıdadır -Raylar - Denetleyici yardımcıları nereye gitmeli?
Google'a bir API çağrısı yapan bir denetleyici yöntem (eylem) sahibim. Ben lib
klasörüne koydum bir sınıf Google
oluşturduk. Sınıf Google
, api çağrı yöntemini sağlar.
def self.list_items(folder_id, access_token)
result = RestClient.get "#{API_URL}/drive/v2/files",
{
:Authorization => "Bearer #{access_token}",
:params => {:q => "'#{folder_id}' in parents and trashed=false"}
}
return JSON.parse(result)['items']
end
Ancak, ben Google
den list_items
çağıran bir yöntem yazmak gerekir, ACCESS_TOKEN, süresi dolmadan ACCESS_TOKEN yeniler, veritabanında yeni access_token kaydeder ve tekrar list_items
çağrı yapan halinde durum yakalar.
Bu yöntemin veritabanıyla etkileşime girmesi gerektiğinden, onu bir sınıfa lib
içinde eklemek istemiyorum. Raylara yeniyim ve lib
klasörünün üçüncü taraf kodunun olması gerektiğini anladım. Google
Sınıfı, raylar projesi veya iş mantığım ile hiçbir ilgisi olmayan bir PORO olarak üçüncü taraf sınıfı olarak düşünülebilir. Bu anlayış yanlışsa lütfen beni düzeltin.
Bu yöntemi denetleyicide özel bir yöntem olarak tutabilirim, ancak bu gibi birden fazla yöntem olduğunu varsayalım. Bu kontrolörü şişirmez mi?
Ayrıca, tüm bu yöntemler google özgü iken, denetleyici FileApiController
olduğunu. Ayrıca kutuya ve dropbox'a özgü yöntemlerim var. İdeal olarak, db ile etkileşimde bulunan GoogleHelper
, DropboxHelper
vb. Sınıfları oluşturmak istiyorum. Bu dersleri nerede tutmalıyız?
Grails arka planından geliyorum ve GoogleHelper
genelde Grails gibi bir hizmet olarak googleService olarak yapılacaktır. Rayları yapmanın yolu nedir? Spesifik olarak, GoogleHelper
dersi nerede tutarsam, nerede tutmalıyım? Yardımcı klasör sadece yardımcıları tutmak için sanırım. Eğer Artık yardımcı çağırabilir sonra kontrolörleri içinde GoogleHelper
çağrı application_controller.rb
bu include GoogleHelper
bunu eklemek istiyorsanız
Kodu, list_items'in içinden kaldırabilirim; bunun yerine, burada "Google.list_items" i arayacağım. Çözümünüz iyi görünüyor, ancak yardımcılar klasörü altındaki sınıfların çoğunlukla yardım için olduğunu düşündüm. Kontrolör yardımcılarını yardımcı klasörün altında tutmak yaygın bir uygulamadır. – vishesh
Evet, iyi uygulamaları, denetleyicileri ve görünümü için yardımcıları kullanmak. – 7urkm3n
Ayrıca, MODEL dosyalarında Helpers 'GoogleHelper.print_hello' öğesini de arayabilirsiniz. – 7urkm3n