0

Ruby on Rails では、各モデル エンティティには "validate_on_ something " フック メソッドがあり、エンティティが実際にデータベースに永続化される前に呼び出されます。Google App Engine にも同様の機能が必要です。宣言で引数を渡すことにより、個々のプロパティで検証を行うことができることは承知しています。ただし、それ以上の検証を行いたい場合、モデル クラス宣言内にそれを行うことができる場所はありますか?

また、同じように、エンティティを実際にデータベースに永続化する前に、エンティティを変更する必要がある場合があります。エンティティが実際にデータベースに書き込まれる直前に、エンティティを変更 (変換) する必要がある場合があります。エンティティ クラスの宣言に、それを可能にする場所はありますか?

これらの変換/検証をクラスの外に置くことができることを認識しています。しかし、これは良い OO 設計とは思えません。この種のニーズのために、モデルで自動的に呼び出されるフックメソッドが必要なようです。

私の質問は、エンティティが永続化される前にエンティティの検証と変換を処理する最も適切な方法は何ですか?

4

2 に答える 2

2

最良の答えは、どのような種類の変換を行う必要があるかによって異なります。モデルの一般化された pre-/post-put メソッドはありませんが、他にもいくつかのオプションがあります。

  • あなたが述べたように、検証関数を Property クラスのコンストラクターに渡すことができます
  • こののように、プログラムで値を生成するカスタム プロパティ クラスを使用できます。
  • API 呼び出しフックを使用して、最下位レベルに格納されているエンティティを変更できます。
于 2009-11-26T22:45:41.943 に答える
1

未加工のアプリ エンジン API の上で何らかの種類の Web フレームワークを使用していますか? Rails は非常に高度なフレームワークです。Django やその他の Web フレームワークを調べましたか? これらは生の appengine エンティティよりもレールに近いことがわかります。

または、より低いレベルの ものが必要な場合は、フックに関するこの記事をご覧ください。

于 2009-11-26T22:36:32.663 に答える