我是rails的新手,我尝试在更新记录时找到与验证属性是否存在相对应的验证方法。如果该属性不存在,意味着请求正文中不存在该属性,则Rails不应更新记录。
validates :description, presence: true
和
validates_presence_of :description
似乎没有完成这项工作。有没有为此目的的方法?这在每天的情景中似乎都很常见。
答案 0 :(得分:2)
如果你说:
model.update(hash_that_has_no_description_key)
然后您没有触及:description
:向:description
发送没有update
密钥的哈希与使用:description => nil
发送哈希值不同。如果model
已经有效(即它有说明),则update
不会使其失效,因为它不会触及:description
。
你这样说:
如果该属性不存在,意味着请求正文中不存在该属性,则Rails不应更新记录。
既然你在讨论请求主体(哪些模型真的不知道什么),那么你应该在控制器中处理这个逻辑,因为它准备了{的传入数据{1}}致电。
您可以检查控制器并抱怨:
update
或者,如果没有data = whatever_params
if(!data.has_key?(:description))
# Complain in an appropriate manner...
end
# Continue as now...
,则可以包含:description => nil
:
:description
答案 1 :(得分:1)
也许你应该使用before_update ..
请参阅:http://edgeguides.rubyonrails.org/active_record_callbacks.html#conditional-callbacks
但使用before_update而不是before_save ..