2012-12-12 15 views
6

Mam model aktywnego zasobu, który musi ustawić nagłówek przed opublikowaniem/wprowadzeniem zapisywania i aktualizowania atrybutów. Problem polega na tym, że wartość nagłówka musi być różna dla każdego użytkownika, dlatego nie można jej ustawić na poziomie modelu. Widziałem przykłady ustawiania nagłówków jako część find, get lub niestandardowych metod, ale nie ma możliwości dodania ich do @myclass.save. Coś takiego jak prefix_options, ale dla nagłówków byłoby idealne (@myclass.prefix_options[:myvar] = 'abcd'), ale nie znalazłem czegoś takiego. Każdy wgląd byłby doceniony.Ustawianie nagłówków w żądaniu zasobu aktywnego

Odpowiedz

5

prostu miałem podobny problem i overrode .headers na mojej klasy ActiveResource. ActiveResource::Base.headers to tylko skrót, ale można go zastąpić metodą! < 3 U Rubin.

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

+0

Działa to tak, jak opisano w przypadku ustawiania nagłówków na podstawie niektórych stałych danych, ale nie pozwala ci uzyskać czegoś z bieżącego żądania, prawda? (tj. 'request.host' lub zmienne sesji) - Które mogą nie być tym, czego chciał OP, ale chciałem tylko wyjaśnić zakres rozwiązania, ponieważ szukam sposobu na zrobienie tego drugiego. – mltsy

2

Właśnie sprawdziłem kod w wersji 3.2.8 i wygląda na to, że nie jest obsługiwany. Nie widzę też okazji, by go podrobić.

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

To woud być wielki plaster złożyć jednak, zwłaszcza teraz, że activeresource został podzielony off na własnym gem do 4,0.

aktualizacja

rzeczywiście można określić nagłówki z surowego żądania POST. po prostu nie można określić ich bardziej abstrakcyjnych metod, takich jak create:

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

+0

Dzięki za odpowiedź John. To było coś, o czym już myślałem, więc jako obejście napisałem klasę, która rozszerza aRes, i zastępuje save i update_attributes. Mój model rozszerzy tę klasę. Daleko od ideału, ale wydaje się działać. Może przedstawię to jako łatę do aRes, chyba że jest to zgodne z projektem. Pozostawię to otwarte przez chwilę, na wypadek, gdyby ktoś wiedział o alternatywnej –

Powiązane problemy