6
我想創建一個自定義驗證函數,只有當數據庫中的當前字段不爲空時,纔會允許字段被保存爲空/零。如何在驗證函數中訪問數據庫值(舊值)?我可以使用self.name_of_field訪問新值。Rails:在編輯驗證過程中比較舊值和新值
這就是我現在所擁有的
validate :image_remote_url_change
def image_remote_url_change
if self.image_remote_url.blank? and self.image_remote_url_changed?
errors.add(:field, "can't be blank once set")
return false
end
end
現在,如果我嘗試編輯現有的對象,它不會接受的空一個新的價值,但在創建新對象時,它會說「可以即使舊的價值從未設置過,一旦設置就沒有空白「。
+1。來自Heroku的Schneems有一個[簡要文章](http://schneems.com/post/28425724540/get-previously-saved-changes-in-rails)討論previous_changes方法,它可能也會幫助你。 – stephenmurdoch
Doesn'這只是工作,但如果對象實際上改變?因爲它被成功保存了。我只是在驗證步驟上做這件事 –
@glumbo試一試,看看 – stephenmurdoch