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#”