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
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/
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ć.
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
:
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 –
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