我有兩個相關模型 - 比如說Activity
和Step
。 Activity has_many :steps
和Step belongs_to :activity
這意味着steps
的表有activity_id
列。防止在Rails模型中改變一個字段
這是在Hobo 1.3中,所以Rails 3.0。
我想要確保在Step
創建後無法將步驟移動到另一個步驟Activity
。我們不希望activity_id
字段發生變化。
我已經從編輯表單中刪除了該字段,但我正在尋找更強的約束。基本上我想驗證update
(不在create
)該列沒有被觸及。 Hobo的文檔沒有提到Hobo內部的任何類型,所以我在看着Rails validations,但到目前爲止我還沒有找到「我只記得更新」的約束條件,也沒有發現某些東西不是改變。
'attr_readonly'按照廣告宣傳,b ut可能會導致與應用程序的另一方面的皺紋。我會在明天嘗試驗證方法,看看這樣做是否更好。 – pjmorse 2013-02-09 02:17:11
如果您確實需要在您的應用程序的其他地方更改ID,那麼即使採用以下驗證方法,您也可以執行此操作:'step.save(:validate => false)' – Deradon 2013-02-09 13:54:44
這不是其他地方的更改問題;它是一個對象副本。 (所以,假設我們假設複製了'Activity',並且複製了所有的'Steps';出於某種原因,這種功能無法正常工作,而且我還沒有深入到複製代碼中去了解這個變化是否會破壞它。) – pjmorse 2013-02-10 01:05:49