2012-12-12 13 views
6

私は、パブリッシュする前にヘッダーを設定する必要があるActive Resourceモデルを持っています。問題は、ヘッダー値が各ユーザーごとに異なる必要があるため、モデルレベルで設定することができないことです。 findget、またはカスタムメソッドの一部としてヘッダーを設定する例がありましたが、@myclass.saveに追加する方法はありません。 prefix_optionsのようなものがありますが、ヘッダーは理想的です(@myclass.prefix_options[:myvar] = 'abcd')が、私はそのようなものは見つかりませんでした。どんな洞察にも感謝します。アクティブなリソース要求のヘッダーを設定します

答えて

5

私は同様の問題を抱えていたし、私のActiveResourceクラスに.headersをオーバーライド。 ActiveResource::Base.headersはデフォルトではハッシュですが、それをオーバーライドしてメソッドにすることができます! < 3 U Ruby。

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。

更新

実際には生のPOSTリクエストでヘッダを指定することができます。あなただけcreateのような、より抽象的な方法でそれらを指定することはできません。

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

+0

返信いただきありがとうございます。それは私がすでに考えていたことのようなものなので、回避策として、aResを拡張し、saveとupdate_attributesをオーバーライドするクラスを作成しました。私のモデルはそのクラスを拡張します。理想からは遠いが、うまくいくようだ。おそらく、それが設計通りに存在しない限り、それをaResへのパッチとして提出するでしょう。 –

関連する問題