Rails,如何删除Active Admin的validates_attachment_content_type?

时间:2015-12-30 18:11:01

标签: ruby-on-rails activerecord activeadmin

我正在使用paperclip来让用户拥有自己的头像。我注意到,当我去主动管理员编辑或创建新用户时,当该用户没有头像时,我在头像内容类型字段中得到“头像内容类型无效错误”。

我可以通过在字段中键入image / jpeg来克服此错误,但显然这对于​​其他管理员用户在每次想要创建或编辑用户时都必须键入该错误并不理想。

User.rb

....   has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#" }, :default_url => "/images/:style/missing.png"
      validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/....

有没有办法保持验证,但是通过隐藏字段或其他方法将其关闭为活动管理员?谢谢。

2 个答案:

答案 0 :(得分:1)

您必须在管理员中自定义createupdate方法。例如:

controller do
  def update
    @user = User.find(params[:id])
    @user.assign_attributes(params[:user], as: :admin)
    @user.save(validate: false)
    redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
  end
end

答案 1 :(得分:1)

我想使用虚拟属性来跳过图像验证。

在用户模型中:

# models/user.rb
attr_accessor :skip_image_validation

validates_attachment_content_type :avatar ... , unless: lambda { skip_image_validation.present? }

在主动管理员的before_save回调中,将:skip_image_validation分配给true,如

# admin/user.rb
ActiveAdmin.register User do

  before_save do |user|
    user.skip_image_validation = true
  end
...