2012-03-26 76 views
0

人們通常如何處理外鍵值的白名單?我們忽略關聯的user記錄的使用情況,它會帶來一些額外的問題並堅持一個相當良好的情況:A Task屬於Project。當我創建任務時,我想用它的project_id值創建它,但我不希望該值可以編輯。該屬性通過共享表單中的隱藏字段傳遞。白名單外鍵

我知道在編輯操作中調用save()之前,我可以在控制器中取消設置屬性,但我想知道是否有人有更好的解決方案。我用過/嘗試了幾次,但都很費力或比我想要的更「普遍」。

有沒有人有解決方案,他們真的很想解決這個特定的問題?

謝謝。

回答

0

我也手動處理。這個過程就是這樣的。

  1. 加載對象並向用戶顯示編輯屏幕。
  2. 當用戶提交時,獲取主ID並再次加載對象。檢查所有權。
  3. 有一個用戶可編輯字段的白名單,通過這些鍵循環並填充您的新對象,離開一切。
  4. 保存。

您可以在保存鉤子或行爲之前將其移入某種形式,我會說。但這似乎是RoR功能的最佳做法(我們都知道GitHub中發生了什麼)

+0

是的。我是UUID的狂熱信徒,並且稍微使用了這些緩和的東西(因爲它們不是可猜測的),但是Github問題肯定會讓我比平常更加考慮這個問題。也許有人會有我的Google-fu沒有發現的真棒解決方案。 – 2012-03-26 14:52:19