这是我的演出模型
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
答案 0 :(得分:2)
这一行显然引发了这个错误:
if image.size > 2.megabytes
显然,如果没有图像......它就不会有尺寸。
你在那里检查没有:
def image_size_validation
return if image.blank?
if image.size > 2.megabytes