Ruby bir model içinde örnein erişim Raylar üzerinde
Ruby on Rails app ince taneli erişim kontrolü uygulamak gerekiyor. İzinler için bireysel kullanıcılar kaydedilmiş bir veritabanı tablo ve düşündüm ki en iyisi olalım, ilgili kaynak (yani örnek bir model) karar belli bir kullanıcı izin okuma veya yazma için. Denetleyicisi bu kararı, her zaman yapmak kesinlikle çok KURU olmaz.< / ^ br .
Sorun bunu yapmak için, modeli geçerli kullanıcı erişim,
. Genel olarak modeller oturumu verilerine erişim, ama yok.may_read
gibi bir şey aramak gerekiyor.?(current_user
, attribute_name
)
Geçerli iş parçacığının geçerli kullanıcı, örneğin this blog post başvuru kaydetmek için oldukça bazı öneriler var. Elbette bu sorunu çözmek istiyorsunuz.
Komşu Google sonuçları tavsiyede beni kurtarmak için bir başvuru için geçerli kullanıcı sınıfı olsa da, sanırım sanıyordum tarafından biri olan uygulama henüz uyum çok kullanıcının aynı anda. ;)
Uzun lafın kısası, geçerli kullanıcı (yani oturum verileri) model içinden erişim için dileğim benden geldiğini hissediyorum doing it wrong.
Yanılıyorsam nasıl bana söyleyebilir misiniz?
Teşekkürler!
CEVAP
current_user
modelin dışında tutmak için içgüdülerinin doğru olduğunu söyleyebilirim.
Daniel gibi sıska denetleyicileri ve yağ modelleri için çalışıyorum, ama aynı zamanda sorumlulukları net bir bölünme var. Kontrol amaçlı gelen istek yönetmek ve oturum. Model soruya cevap vermek gerekir "kullanıcı x, bu nesneye y Yapabilir mi?", ama current_user
başvuru için anlamsız. Eğer varsa hangi konsol? Eğer bir cron çalışan olursa?
Doğru izinleri modeli API ile birçok durumda, bu çeşitli işlemler için geçerli olan 5* *tek satır ile ele alınabilir. Ancak eğer işler gittikçe daha karmaşık isteyebilirsiniz uygulamak ayrı bir katman (muhtemelen lib/
) Bu kapsüller daha karmaşık yetkilendirme mantığı önlemek için kumandanız olmadan şişirilmiş, ve önlemek senin model olmak çok sıkı eşleşmiş web istek/yanıt döngüsü.
'DateTime, zaman Damgası, Zaman v...
Raylar ve Komisyon sorunları üzerinde ...
Raylar üzerinde Ruby _snowman, param i...
raylar üzerinde ruby koleksiyonu güzer...
Raylar üzerinde Ruby, ne biçim&; th&qu...