ruby-on-rails – 验证和更新单个属性rails
发布时间:2020-12-17 04:31:47 所属栏目:百科 来源:网络整理
导读:我的用户模型中有以下内容 attr_accessible :avatar,:emailvalidates_presence_of :emailhas_attached_file :avatar # paperclipvalidates_attachment_size :avatar,:less_than = 1.megabyte,:message = 'Image cannot be larger than 1MB in size',:if = Pr
我的用户模型中有以下内容
attr_accessible :avatar,:email validates_presence_of :email has_attached_file :avatar # paperclip validates_attachment_size :avatar,:less_than => 1.megabyte,:message => 'Image cannot be larger than 1MB in size',:if => Proc.new { |imports| !imports.avatar_file_name.blank? } 在我的一个控制器中,我只想更新和验证头像字段而不更新和验证电子邮件. 我怎样才能做到这一点? 例如(这不起作用) if @user.update_attributes(params[:user]) # do something... end 我也尝试过update_attribute(‘avatar’,params [:user] [:avatar]),但这也会跳过avatar字段的验证. 解决方法
您可以使用
validate the attribute by hand并使用
update_attribute ,即
skips validation.如果添加
this to your User :
def self.valid_attribute?(attr,value) mock = self.new(attr => value) if mock.valid? true else !mock.errors.has_key?(attr) end end 然后这样更新属性: if(!User.valid_attribute?('avatar',params[:user][:avatar]) # Complain or whatever. end @user.update_attribute('avatar',params[:user][:avatar]) 只有(手动)验证该属性时,才应更新单个属性. 如果你看一下Milan Novota的valid_attribute怎么样?工作,你会看到它执行验证,然后检查特定的attr是否有问题;是否有任何其他验证作为valid_attribute失败并不重要?仅查看您感兴趣的属性的验证失败. 如果您要做很??多这样的事情,那么您可以向用户添加一个方法: def update_just_this_one(attr,value) raise "Bad #{attr}" if(!User.valid_attribute?(attr,value)) self.update_attribute(attr,value) end 并使用它来更新您的单个属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |