問題タブ [rails-roar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Consuming models from an API in multiple rails apps
I'm in the process of setting up a centralised data management system + CAS for a series of apps that currently have duplicated data across many databases that is a nightmare to manage.
I've got the CAS system implemented nicely with rubycas-server and rubycas-client, but I'm running into problems when it comes to actually sharing the user data and other models between client apps. For example:
- CAS/Central system (share a DB) expose a base User as JSON
- App1 extends user with information about favourite colours
- App2 just cares about having a user
I want to be able to let App1 add the data it cares about the object returned from the API, without burdening App2 with that info.
I'm currently playing around with writing a gem for the client apps which can consume the JSON (with ActiveResource or ROAR, not sure which yet), however the client apps need to decorate/extend their models with additional data which is currently managed via ActiveRecord. So I'm not sure what the best way to go about extending those gem provided instances would be.
So far I've experimented a bit with having the gem contain a bunch of modules which the ActiveRecord models can then include, but this has issues when needing to deal with class methods (not insurmountable but any means). I've tried looking around for resources/guides for best practices in this sort of situation, but haven't been able to find anything.
tl;dr summary: Multiple client apps need to use and extend data provided by a JSON api. What's the recommended practice for doing this?
ruby-on-rails-3 - ROAR: jbuilder や rabl よりも優れている点は何ですか?
https://github.com/apotonick/roarを読みましたが、ROAR には多くの考慮が払われているようです。しかし、jbuilder を使用するかなり標準的な Rails を利用した JSON API のコンテキストでは、ROAR が提供するメリットをすぐには理解できません。
私は何が欠けていますか?
json - Grape が出力を 2 回 JSON エンコードするのを止めるにはどうすればよいですか?
現在、JSON ベースの Grape API を実装しています。JSON のシリアル化と逆シリアル化のために roar を統合しました。次のコードを実行すると、JSON が 2 回エンコードされ、スラッシュ付きの応答になっているようです。必要に応じて JSON デコードを抑制する Grape はありますか?
json = UserRepresenter.new(user).to_json
{ status: StatusResponse::VALID, message: json }
ruby-on-rails - プロパティを ROAR リプレゼンテーションに動的に追加する方法は?
Rails アプリケーションの API を実装するために ROAR を使用しています。このアプリケーションは、 subjectやdescriptionなどの属性を持つことができるチケットを扱いますが、ユーザー定義の属性も持つことができます。簡単にするために、チケットが次のようになっていると仮定します。
このようなチケットの目的の JSON 出力は次のようになります。
ここで、すでに問題が発生している可能性があります。すべてのプロパティはルート オブジェクトの直下の子です。つまり、それを代表として書き出すことはできません。
それを達成するためにROARが提供するメカニズムはありますか? たとえば、実際のインスタンスのコンテキストで実行されるコールバック。
これを達成するために見落としたROARのようなものはありますか?
ROARのドキュメントとpresentable のドキュメントの両方を調べましたが、何も見つかりませんでした。
免責事項
質問を読みやすくするために、実際の状況を単純化しようとしました。重要な情報が不足していると思われる場合は、お知らせください。ありがたいことに、詳細を提供します。
範囲外
選択した JSON 形式が良いか悪いかについて議論しないでください。ROAR がそれをサポートするかどうかを評価したいのです。
ruby-on-rails - ROAR gem を使用して基準に基づいて同じクラスの複数の表現を作成する戦略は?
これは実際には、Rails で Roar と表現可能を使用するためのベスト プラクティス/使用法に関する質問です。その例は見つかりませんでした。ここに 2 つのシナリオがあります。デコレータパターンを使用しています。
シナリオ 1:
複数の属性と関連付けを持つ Product クラスがあるとします。デフォルトでは、誰かが api.com/products/1 にリクエストしたとき - 私が持っているものすべてを表示したいのですが、誰かが api.com/products/1/inventory_details のような別のアクションにリクエストした場合 - 私は欲しいだけです在庫に関連する限定的なビューを表示するため (在庫検索を高速化するため)、または誰かが api.com/products/1/assembly_details にリクエストを行った場合 - 関連するサブアセンブリのマトリックスと関連する製品の詳細を返したい.
シナリオ 1 に関する質問:
- ProductRepresenter、ProductInventoryDetailRepresenter、ProductAssemblyDetailRepresenter など、ケースごとに特定のリプレゼンテーションを作成する必要がありますか?それとも、ProductRepresenter である種のフロー制御を使用する必要がありますか?
- 複数のリプレゼンテーションを作成する場合、同じクラスに対して、represents / Respond_with pattern と Respond_to / render をどのように使用できますか?
- これをアクション レベルでオーバーライドできますか?
シナリオ 2:
内部アプリケーションから呼び出すことができる api.com/products/1 があるとしますが、クライアントにも公開したいとします。ただし、在庫の詳細や 1 つまたは 2 つの属性など、一部の属性をクライアントに表示したくありません。また、従業員のアクセス レベルに応じて、ビュー/表現を制限したいと考えています。
シナリオ 2 に関する質問:
- ProductRepresenter、ProductClientViewRepresenter など、ケースごとに特定のリプレゼンテーションを作成する必要がありますか?それとも、ProductRepresenter である種のフロー制御を使用する必要がありますか?
- 複数のリプレゼンテーションを作成する場合、同じクラスに対して、represents / Respond_with pattern と Respond_to / render をどのように使用できますか?
- これをアクション レベルでオーバーライドできますか? アクセス タイプに基づいて、admin、inventory_user、shipping_user のように指定できますか?
アドバイスをいただければ幸いです。(Roar-Rails gem の github にこれをクロスポストします)
ruby-on-rails - オプション ブドウの代表者
次の宝石を使用して、Representers を使用して Rails API に取り組んでいます: Grape、Roar、およびGrape-Roar
ここで、ここで説明されているように、API エンドポイントから渡す条件に基づいて、特定のプロパティをリピーターに含める (または含めない) 条件を追加しようとしています(表現可能な gem は Roar gem によって使用されることに注意してください)。
私はおそらく何かを見落としていますが、オプションを表現者に渡す方法がわからないので、条件に基づいてプロパティを提示できます
たとえば、ブドウのエンドポイントの 1 つで、次のように呼び出します。
present payment_object, with: PaymentRepresenter, include_orders: true
PaymentRepresenter で支払いオブジェクトを提示します。ご覧のとおり、支払いに関連する注文も含めたいので、支払い代表者で次のことを試みました。
ただし、 args[:include_orders] は nil です
ここで私が間違っていることを誰かが知っていますか?
前もって感謝します!