0

RoR 3

私はいくつかの詳細を含むユーザーモデルを持っています。そのうちのいくつかは編集可能ですが、承認が必要です。

次のようにモデルを更新するためのベストプラクティスを知りたいと思いました。

  1. ユーザーが一部のデータを変更し、データが承認のために送信されます
  2. ユーザーには引き続き古いデータが表示されます。
  3. モデレーターが変更を承認します。
  4. ユーザーには新しいデータが表示されます

私の現在の考えは、それを2つのモデルとして分離することです。

  1. ユーザーモデル
  2. プロファイルモデル

ユーザーモデルには現在のプロファイルのIDが含まれ、ユーザーがプロファイルを更新すると、新しいプロファイルモデルが追加され、管理者が同じものを承認すると、関連するプロファイルモデルがユーザーモデルにリンクされます。(古いものはその後破壊される可能性があります)。

他のアイデアは

  1. 1つの属性ごとに2つの属性を設定する(ただし、編集は最小限に抑えられます)
  2. 編集可能なエントリはすべて文字列であり、表示のみに使用されるため、実際のモデルには、現在の値と未承認の古い値の両方のエスケープされたJSONが含まれます。
4

1 に答える 1

1

現在のアイデアは確実に機能します。しかし、考えるべきことがあります:

前の変更がすでに承認されていない状態でユーザーが2つ以上の変更を行うとどうなりますか?彼は別の属性を変更したり、以前に変更した属性にさらに別の変更を加えたりする可能性があります。これらの変更は異なるベース(異なるモデル)から分岐するため、システムはこれらの変更をマージできる必要があります。

おそらく、より良い解決策は、現在のプロファイルを持ち、承認されるプロファイル(WTBA)を待つことです。

  1. 承認する変更がない場合、ユーザーには現在のプロファイルが表示されます。
  2. ユーザーが変更を加えると、システムはWTBAプロファイルを作成します。
  3. ユーザーにはWTBAプロファイルが表示されます(他のユーザーには表示されません)。
  4. ユーザーが別の変更を行うと、システムは変更をWTBAプロファイルに保存します(新しいプロファイルは作成しません)。
  5. モデレーターがWTBAプロファイルを承認すると、その時点でWTBAが現在のプロファイルになり、1位に戻ります。
于 2013-01-10T14:07:24.580 に答える