Ruby & Rails

mount_uploader image update vali

2019-04-30  本文已影响0人  云莉6
class Lesson
  mount_uploader :image, ImageUploader
  validates :image, presence: true
end

class LessonController
  def update
    if @lesson.update(lesson_params)
      redirect_to root_path, notice: "更新课程成功"
    else
      render :edit
    end
  end

  private

  def lesson_params
    params.require(:lesson).permit(:title, :description, :image)
  end
end

上述代码,在 update 的时候,会一直报错 「image 不能为空」,在 update 时候,simple form 不会把 image 带回来,也就是 lesson_params 中不会存在 image,这样去更新的时候,其实之前 create 的时候已经上传过图片,在 update 还会被 validates 为不正确的。

改正方法为

class Lesson
  mount_uploader :image, ImageUploader
  validates :image, presence: true, if: -> { image_changed? }
end

rails 5 下可能要改为,因为在第一次 create 的时候,rails 5 中不会把 create 的算成 image_changed?

class Lesson
  mount_uploader :image, ImageUploader
  validates :image, presence: true, on: :create
end
上一篇下一篇

猜你喜欢

热点阅读