2009-06-04 8 views
0

私が書いているアプリケーションのユーザー/ロールの関係を実装する方法を理解しようとしています。パーシスタンス層は、Google App Engineのデータストアであり、できることにいくつか興味深い(しかし一般的に有益な)制約があります。どのような考えが評価されます。コンテキスト内のユーザーとロール

物事を非常に具体的にすることは役に立ちます。組織、ユーザー、テスト内容、テスト管理(テストの記録)がありたいと思います。ユーザーは、参加者(受験者)、試験資料の寄稿者、またはその両方の役割を持つことができます。ユーザーは、ゼロ以上の組織のメンバーになることもできます。参加者の役割では、ユーザーは以前に行ったテストの管理を見ることができます。その参加者がユーザー許可を与えている場合、別の参加者のテスト管理も表示できます。ユーザーは公開されたテスト資料を見ることができ、そのユーザーが組織によって承認されたテストの特定の管理中に参加者として制限付きのコンテンツを見ることができます。組織のメンバーとして、ユーザーはコントリビュータの役割で制限されたコンテンツを見ることができ、コンテンツを編集することもできないこともあります。各組織には、メンバーがコンテンツを表示および編集できるかどうかを判断し、管理者権限を持つユーザーを判断できる1人または複数の管理者が必要です。また、問題を解決して解決できるアプリケーション全体のスーパーユーザーが1人または複数存在する必要があります。組織のメンバーは、関係する参加者が見ることを許可したテストの管理を見ることができ、許可が与えられていない場合は匿名のデータを見ることができます。他の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。

App Engineのデータストアには結合がないので、アクセス権を確認するクエリが高速であることを確認するために、一般的なSQLデータベースに対して通常よりも標準化されたものを少なくする必要がありますリンクが表示されます)。

私の質問は以下のとおりです。

  1. 私はこの上で前進させるにはどうすればよいですか?モデルを正しく取得するために多くの時間を費やす必要がありますか、何度も繰り返して、徐々に複雑さを増すことができますか?
  2. 誰かがこのインスタンスで物事を壊す方法に関するいくつかの一般的なアイデアを持っていますか?
  3. この配置と互換性のある方法で役割を処理するGAEライブラリはありますか?

答えて

1

私は私が正しくあなたの質問を理解していますかなりわからないんだけど、私は答えるために全力を尽くすよ:

  1. 私は常にテストし、書き込みを繰り返しプログラミングが簡単に見つけるので、それは私です勧告。
  2. 私はすでに必要なエンティティが正しく分割されていると思いますが、追加のエンティティ:Permissionが必要です。それぞれのロールで何ができるかを定義しています。各ロールのロール数は0以上です。Permission。 GAEの多対多の関係ごとに、キーのリストを定義するか、仲介者となる別のエンティティを定義する必要があることを覚えておいてください。
  3. 私は知っているわけではありませんが、Djangoベースの役割システムを調査し、Djangoベースのソリューションを適応させたいと思うかもしれません。あなたはApp Engine PatchでかなりうまくGAEにDjangoをハックすることができます。
+0

有用な回答ありがとうございます。 Re 1、私は間違いなく選択肢に対する反復的なアプローチを好んでいます。しかし、データベースでは私の経験は少し違っていました。私の感覚は、より多くの思考を前面に置くことが良いかもしれないということです。そして私は、GAEデータストアがSQLデータベースよりもリファクタリングが難しいことに気付きました。だから、似たようなことをやった人の誰かが、どのようなバランスでストライキをするのか分かっているかどうかを知りたいと思っていました。 私はapp-engine-patchを使用していますが、Djangoには中間機関(またはアカウント)という概念はありません。 –

+0

あなたはそうです、GAE(および一般的なデータベース)はリファクタリングを困難にします。通常、選択するパスは、カラムを追加するデータリファクタ、削除しないデータリファクタだけです。 GAEにデータのアップロードがあるので、これはもう少し簡単かもしれませんが、この種の問題は私が有料のサーバースペースに対してGAEを残した理由の1つでした。 –

関連する問題