2017-04-07 41 views
0

我是新的rails,我試圖找到一個驗證方法,在更新記錄時驗證屬性的存在。如果該屬性不存在,意味着請求主體中不存在該屬性,那麼Rails不應該更新該記錄。如何在更新記錄時驗證屬性的存在?

validates :description, presence: true 

validates_presence_of :description 

似乎並沒有做的工作。有沒有爲此目的的方法?這似乎在每天的情景中都很常見。

+0

這應該工作。你能粘貼更多的代碼嗎? – Rahul

回答

2

如果你說:

model.update(hash_that_has_no_description_key) 

那麼你就不觸摸:description:發送散列沒有:description鍵到update是不一樣的發送與:description => nil散列。如果model已經有效(即它有說明),那麼update不會使其無效,因爲它不會觸及:description

你這樣說:

如果屬性不存在,意味着該屬性不請求主體存在,Rails的不應該更新記錄。

既然你談論請求主體(該款車型真的不應該知道的東西),那麼你應該用這種邏輯在控制器中處理,因爲它準備爲update呼叫傳入的數據。

你可以檢查在控制器和抱怨:

data = whatever_params 
if(!data.has_key?(:description)) 
    # Complain in an appropriate manner... 
end 
# Continue as now... 

,或者你可以包括:description => nil如果沒有:description

def whatever_params 
    data = params.require(...).permit(...) 
    data[:description] = data[:description].presence # Or however you prefer to do this... 
    data 
end 
相關問題