2012-12-12 2 views
6

저장 및 update_attributes를 게시/퍼팅하기 전에 헤더를 설정해야하는 활성 자원 모델이 있습니다. 문제는 헤더 값이 각 사용자마다 달라야하므로 모델 수준에서 설정할 수 없다는 것입니다. find, get 또는 사용자 지정 방법의 일부로 헤더를 설정하는 예제를 보았지만 @myclass.save에 추가 할 방법이 없습니다. prefix_options과 같은 것이지만 이상적인 헤더 (@myclass.prefix_options[:myvar] = 'abcd')가 될 것입니다. 모든 통찰력은 인정 될 것이다.활성 자원 요청의 헤더 설정

답변

5

난 그냥 비슷한 문제를 가지고 내 ActiveResource 클래스에 .headers을 무효화한다. ActiveResource::Base.headers은 기본적으로 해시 일 뿐이지 만이를 재정의하여 메소드가 될 수 있습니다! < 3 루비.

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

+0

이것은 상수 데이터를 기반으로 헤더를 설정하는 것으로서 작동하지만 현재 요청에서 뭔가를 얻을 수는 없습니까? (즉'request.host' 또는 세션 변수) - OP가 원했던 것은 아니지만 솔루션의 범위를 명확히하고 싶습니다. 왜냐하면 후자를 수행 할 방법을 찾고 있기 때문입니다. – mltsy

2

코드에서 3.2.8을 체크했는데 지원되지 않는 것 같습니다. 나는 또한 그것을 monkeypatching 많은 기회를 볼 수 없습니다.

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

그래도 제출 할 수있는 좋은 패치, 특히 지금 activeresource 4.0에 대한 자신의 보석으로 물적 분할 된 수 woud.

업데이트는 실제로는 원시 포스트 요청 헤더를 지정할 수 있습니다. 당신은 단지 create 같은보다 추상적 인 방법으로이를 지정할 수 없습니다 :

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

+0

답장을 보내 주셔서 감사합니다. 그것은 내가 이미 생각하고있는 것입니다. 그래서 해결 방법으로 aRes를 확장하고 save 및 update_attributes를 재정의하는 클래스를 작성했습니다. 그러면 내 모델이 해당 클래스를 확장합니다. 이상적이지만 멀리있는 것 같습니다. 어쩌면 설계대로 Ares에 패치를 제출하지 않는 한 그것을 제출할 것입니다. 누군가가 대안을 알고있는 경우를 대비하여 잠시 동안이 내용을 공개하지 않을 것입니다. –