-1
有一天,我試圖在rails控制檯中修復一些數據。如何防止在rails中設置現有記錄ID時覆蓋對象
Class Project
belongs_to :user
end
Class User
has_many :projects
end
代碼很簡單,我是爲了一個項目涉及到一個用戶這在軌控制檯:
user = User.find 31
project = Project.find 99
project.user_id = user.id
project.save
但是,我犯了一個錯誤:
user = User.find 31
project = Project.find 99
project.id = user.id #!!!!!! I used #id instead of #user_id
project.save
由於項目具有id = 31的記錄,所以此操作相當於更新項目,其中id == 31.
有沒有辦法爲了防止這種錯誤的錯誤?
作爲一種最佳實踐,我會建議不要通過控制檯修改生產數據。即使它看起來很小(像這樣),也沒有一種很好的方式來審計發生的事情,回滾更改或防止錯誤。相反,您可以編寫rake任務,讓其他人查看,爲他們編寫測試,在本地測試樣本數據,然後在服務器上運行它們,這樣可以減少破壞生產數據的可能性。 – carols10cents
@ carols10cents感謝您的建議,非常好的觀點:) – KilenZhang