2013-10-28 59 views

回答

3

如果你想跳過所有驗證從任務你可以possibly use this

如果您想有條件地運行驗證you can use this,並在模型上設置某些值以指示驗證應該被跳過。

例如,在模型上有一個validate字段,用於存儲是否應驗證該記錄。

validates :user_id, presence: true, unless: 'validate == false' 

這有點破解。

如果你問是否有一些乾淨的方式讓模型中的代碼知道它從哪裏被調用...不,我不知道。使用條件驗證或爲特殊情況跳過驗證提供的方法之一。

+0

謝謝!我還想知道第二種方法:我只會在我的rake任務模型中設置'validate'屬性,然後在before_save中檢查它的存在並在之後刪除它,因爲它不需要持久化。 – sina

+1

您也可以使用虛擬屬性來代替創建數據庫列。沒有任何理由,如果它從不碰到你的數據庫,你就需要將它刪除。將模型保存到數據庫時,應該只嘗試映射到數據庫列的持久性屬性。 – jefflunt

相關問題