2012-03-26 8 views
0

一般的に、外部キー値のホワイトリストをどのように処理していますか?追加の問題のセットをもたらし、かなり良心的なシナリオに固執する関連するuserレコードの使用例を無視しましょう。TaskProjectに属します。タスクを作成するときに、その値をproject_idという値で作成したいのですが、その値を編集可能にしたくありません。このプロパティは共有フォームの非表示フィールドによって渡されます。外部キーのホワイトリスト

編集アクションでsave()を呼び出す前にコントローラのプロパティを解除することができますが、誰かがより良い解決策を持っているかどうかは疑問でした。私はいくつかを使用したり、試してみましたが、すべてが面倒で、あまり「普遍的な」ものではありません。

誰もがこの特定の問題を解決するのが本当に好きなソリューションを持っていますか?

ありがとうございました。

答えて

0

これも手動で処理します。プロセスはこのようなものです。

  1. オブジェクトをロードして、ユーザーに編集画面を表示します。
  2. ユーザーがサブミットすると、プライマリIDを取得してオブジェクトを再度ロードします。所有権を確認してください。
  3. 編集可能なフィールドのホワイトリストを作成し、それらのキーをループして新しいオブジェクトを作成し、それ以外はすべてそのままにします。
  4. 保存します。

私はこれを保存する前に何らかの種類の動作に移行することができます。しかし、これはRoR機能(GitHubで何が起こったのかを知っている人)のベストプラクティスのようです。

+0

うん。私はUUIDsを熱心に信じていて、それらを緩和するのはちょっと考えてもらえませんが、確かにGithubの問題はこれ以上のことをいつもよりも考えています。私のGoogle-fuが明らかにしなかったすばらしい解決策を誰かが持っているかもしれないと考えました。 –