验证图片存在时出错4

时间:2015-05-11 23:34:48

标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller model

这是我的演出模型

class Gig < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "360x170>", :bigger => "650x459>" }
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
  validate :image_size_validation

  def image_size_validation
    if image.size > 2.megabytes
      errors.add(:base, "Image should be less than 2MB")
    end
  end
end

一切都很好,我不能按照自己的意愿上传大于2Mb的图片,并且会发出相关的通知(由我写)。

  

问题:当我保存表单(新产品)时,如果没有选择任何图片,则会引发错误undefined method > for nil:NilClass。而不只是对用户说,他应该   上传图片,以便保存表格。

用于创建的Gig控制器是

def create
    @gig = current_user.gigs.build(gig_params)

    if @gig.save
      redirect_to @gig, notice: "Gig successfully created"
    else
      render "new"
    end
  end

1 个答案:

答案 0 :(得分:2)

这一行显然引发了这个错误:

if image.size > 2.megabytes
显然,如果没有图像......它就不会有尺寸。

你在那里检查没有:

def image_size_validation
  return if image.blank?
  if image.size > 2.megabytes