我有模特简介
class Profile < Abstract
has_attached_file :avatar,
...
validates_attachment_size :avatar, :less_than => 2.megabytes
validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png', ...]
# Many other validations
end
我有两种不同的形式:一种用于头像,另一种用于所有其他领域。用户必须能够在不填写第二个表单的情况下保存头像。是否可以仅验证回形针附件,跳过所有其他验证?按照这个答案,我试图这样做:
class Abstract < ActiveRecord::Base
def self.valid_attribute?(attr, value)
mock = self.new(attr => value)
unless mock.valid?
return !mock.errors.has_key?(attr)
end
true
end
end
并在控制器中
def update_avatar
if params[:profile] && params[:profile][:avatar].present? && Profile.valid_attribute?(:avatar, params[:profile][:avatar])
@profile.avatar = params[:profile][:avatar]
@profile.save(:validate => false)
...
else
flash.now[:error] = t :image_save_failure_message
render 'edit_avatar'
end
end
但它不适用于回形针。Profile.valid_attribute?(:avatar, params[:profile][:avatar])
总是返回真。