Ruby on rails 使用活动存储上载文件后执行操作

Ruby on rails 使用活动存储上载文件后执行操作,ruby-on-rails,rails-activestorage,Ruby On Rails,Rails Activestorage,我的模型有一个附件:照片 首次创建此模型时,它有0张照片。如果我运行photos.attached?我会得到false 当用户将一些文件上传到照片时,我需要执行一些操作,但这只是第一次。在更新:if photos.attached?之前,我尝试使用。但我需要知道用户是否专门更新照片 有没有办法知道用户是否正在尝试更新照片?或者有一种简单的方法可以做到这一点吗?检查rails模型和选项“on::create”和“update”中的回调(创建后、保存后等)。有一种方法可以使用 class Post

我的模型有一个
附件:照片

首次创建此模型时,它有0张照片。如果我运行
photos.attached?
我会得到
false

当用户将一些文件上传到照片时,我需要执行一些操作,但这只是第一次。在更新:if photos.attached?之前,我尝试使用
。但我需要知道用户是否专门更新照片

有没有办法知道用户是否正在尝试更新照片?或者有一种简单的方法可以做到这一点吗?

检查rails模型和选项“on::create”和“update”中的回调(创建后、保存后等)。

有一种方法可以使用

class Post < ApplicationRecord
  has_many_attached :photos

  before_update :do_whatever, if: -> { photos.dirty? } 

  def do_whatever
    # doing something
  end
end
class Post{photos.dirty?},则执行任何操作
什么都行
#做某事
结束
结束
如果:->{photos\u changed?}

Rails没有添加向文件附件添加验证的功能。看

尝试以下方法:

验证
mime类型

<%= f.file_field :photos, accept: "image/png,image/gif,image/jpeg', multiple: true %>

让我直截了当地说:您需要知道如何在第一次将照片附加到您的
模型上时执行操作
?我认为后一部分的正确语法是
->{photos.changed?}
我无法实现此功能。我一直收到错误“未定义的方法'dirty'for#”