2012-12-12 22 views
6

Kaydetme ve güncelleme_attributes gönderme/gönderme işleminden önce bir üstbilgi ayarlaması gereken bir Aktif Kaynak modelim var. Sorun, başlık değerinin her kullanıcı için farklı olması gerektiğidir, bu nedenle model düzeyinde ayarlanamaz. Üstbilgileri find, get veya özel yöntemlerin bir parçası olarak ayarlamak için örnekler gördüm, ancak @myclass.save'a eklemenin bir yolu yok. prefix_options gibi bir şey ama başlıklar için ideal olurdu (@myclass.prefix_options[:myvar] = 'abcd') ama böyle bir şey bulamadım. Herhangi bir içgörü takdir edilecektir.Etkin kaynak talebinde ayar başlıkları

cevap

5

Sadece benzer bir sorun vardı ve benim ActiveResource sınıfına .headers overrode. ActiveResource::Base.headers varsayılan olarak yalnızca bir karma, ancak bir yöntem olarak geçersiz kılabilirsiniz! < 3 U Ruby.

http://rmosolgo.github.io/blog/2014/02/05/dynamically-generated-headers-for-activeresource-requests/

+0

Bu, bazı sabit verilere dayanarak üstbilgileri ayarlamak için açıklandığı şekilde çalışır, ancak geçerli isteğin dışında bir şey almanıza izin vermez mi? (yani 'request.host' veya oturum değişkenleri) - OP'nin istediği şey olmayabilir, fakat sadece çözümün kapsamını açıklığa kavuşturmak istedim çünkü ikincisini yapmak için bir yol arıyorum. – mltsy

2

Sadece 3.2.8 kodunu kontrol ettim ve desteklenmiyor gibi görünüyor. Ben de onu maymun için çok fazla fırsat görmüyorum.

https://github.com/rails/rails/blob/c2193c11ad215d3a2d7d35960630b3e1902a5082/activeresource/lib/active_resource/base.rb#L1359

Ama göndermek için büyük bir yama, özellikle de şimdi o activeresource 4.0 için kendi mücevher içine kapalı bölünmüş durumda woud.

güncelleme aslında bir çiğ sonrası isteği ile başlıklarını belirtebilirsiniz. Sadece create gibi daha soyut yöntemlerle bunları belirleyemezsiniz:

https://github.com/rails/rails/blob/c2193c11ad215d3a2d7d35960630b3e1902a5082/activeresource/lib/active_resource/connection.rb#L97

+0

Cevabınız için teşekkürler John. Bu zaten düşündüğüm bir şeydi, bu yüzden bir geçici çözüm olarak aRes'i genişleten bir sınıf yazdım ve kaydetme ve güncelleme_atlamalarını geçersiz kıldım. Modelim daha sonra bu sınıfı genişletecek. İdeal olmaktan çok uzak ama işe yarayacak gibi görünüyor. Belki de tasarım gereği olmadığı sürece bunu aRes'e bir yama olarak gönderirim. Birisi bir alternatif için biterse bir süreliğine bu işten ayrılıyorum –