mod_passenger ile Apache üzerinde dağıtılan bir Raylar v2.3.8 app bakımı içinde geçerli kullanıcı oturumunu erişenRaylar:. Bir model (
ben tam olarak modellerinden biri (bir Denetçi gözlemci de geçerli kullanıcı oturumu erişmesi gereken) Bu MVC prensibini kırdığını biliyorum ama şu anda oturum açmış olan kullanıcıyı bilmesi gereken bir gözlemciye sahip olduğum için onu ihlal etmeliyim.Çok kontrolör var ve aramayı Auditor logger'ına yerleştirmek çok fazla DRY olmayacaktı. sadece şu anda kullanıcı oturumunda oturum ile User.current arama yapabilmek için çalışıyorum
Ancak önbelleğe alma/iş parçacığı güvenliği ile ilgili bir sorun koştum ettik. döndü. asıl yazar (bir sınıf değişkeni kullanılan @@ geçerli kullanıcı. Ama bu iş parçacığı güvenli değil, bu yüzden bu Bu yüzden iş parçacığı güvenli olmalıdır. Ve denetçi gözlemcisinde bir çağrım var: Kullanıcı.current'ı konu olarak geçtiğim yer.
Bu kod geliştirme konusunda harika çalışıyor, ancak üretimlerimde User.current öğesinden yanlış değerler alıyorum. Bazen başka bir kullanıcı kaydına giriyorum, şimdiki kaydı değil. Bu yüzden hala var olan bazı iş parçacığı güvenliği/sınıf önbelleği sorunu var, ancak bunu nasıl düzelteceğimi anlayamıyorum.
Herhangi bir öneriniz var mı? Teşekkürler
, benim geçerli kullanıcı/saklamak elde etmek izin verir. Sorun, User.current'ın önbelleğe alındığı çağrılarıyla ortaya çıkıyor (bence). – Swartz
Seçenek 1 için: current_user'yi doğrudan denetleyici yönteminden geçirebilirim, neden get_current_user() neden gerektiğinden emin değilim. Ancak, özellikle bu tür bir çağrı gerektiren çok sayıda nokta olduğu için denetçiden Auditor() 'a çok çağrı yapılmasını istemiyorum. Gözlemci çok daha temiz çalışır. – Swartz
Seçenek 2 için: Seni takip etmiyorum ... Kullanıcı nesnesi değiştirilen tek şey değil. Oturum açan kullanıcının değiştirebileceği çeşitli nesnelerim var (Politika, İzin, vb. Gibi). Denetçiyi bir etkinlik kayıt defteri olarak düşünün. Kullanıcılar CRUD politikaları, izinleri, vb. Olabilir. Bu yüzden hala current_user'yi Auditor modeline geçirmem gerekiyor. – Swartz