Rails は非常に魔法のようなものなので、私よりも少し詳しい人の助けが必要です。
私は多くの粗悪な API 基本エンドポイントを何度も繰り返しているため、それらの作成を自動化することにしました (次のgithub issueの最終投稿を参照してください)。
基本的な有効なswaggerドキュメントをいくつか用意するために、ApplicationRecordにカスタムコードを追加してGrape::Entitiesの作成も自動化しました(この質問に追加されたgithub SOLUTIONスニペットを参照してください:親クラスからクラス定義を継承する)。
上記の 2 つのカスタマイズにより、次のようにするだけで API エンドポイントを作成できます。
V1::Base.show Book
上記のメソッドはエンドポイントを作成し、自動的に作成された Entity を次のように使用します。これにより、Book モデル クラスで必要に応じて後でオーバーライドできるデフォルト値で自動的に文書化されます。
Book::Entity
上記のコードが壊れているように見える例外が 1 つあります。Rails アプリケーション (たとえば、初期化子) のブートストラップ中に初期状態で対話するたびに、V1::Base.show Book
(API エンドポイントを作成するために)Book::Entity
次のエラーを呼び出すときに発生するようです。返されます:
NameError: uninitialized constant Book::Entity
誰がそれが何であるかについてのヒントを教えてもらえますか? モデルとの初期の相互作用は単純な Book.all である可能性があり、スレッドの問題のような匂いがします。