ruby-on-rails - 像访问本机模型一样访问 ActiveStorageBlob 或 ActiveStorageAttachment
问题描述
是否可以像访问本机模型一样访问 ActiveStorageBlob 或 ActiveStorageAttachment?
例如
我想做ActiveStorageBlob.first
访问这个模型/表的第一条记录。或者。ActiveStorageAttachment.all.as_json
生成 json 格式的打印。
背景思想是想办法将这些ActiveStorage相关表的内容转储为json格式的文件。然后更改这些文件的内容,然后将其加载回来。
----得到正确答案后扩展本文-----
非常感谢莎拉玛丽。我希望您知道如何将 JSON 数据加载回这些表中?我试过这个:
dump_file_path = File.join(Rails.root, "backup", active_storage_blobs_file)
load_json = JSON.parse(File.read(dump_file_path))
load_json.each do |j|
ActiveStorage::Blob.create(j)
end
但这不起作用。
ActiveModel::UnknownAttributeError(ActiveStorage::Blob 的未知属性“attachable_sgid”。)
解决方案
ActiveStorage::Blob.first
ActiveStorage::Attachment.all.as_json
----对于第二个扩展问题----
ActiveStorage::Blob.create_before_direct_upload!(
filename: j[:filename],
content_type: j[:content_type],
byte_size: j[:byte_size],
checksum: j[:checksum]
)
# or
ActiveStorage::Blob.create_before_direct_upload!(**j.symbolize_keys)
推荐阅读
- r - 将元素添加到列表的 tidyverse purrr 方法
- vuex - 可以在 Vuex 状态下使用 Javascript 类对象吗?
- python - @property:AttributeError:无法设置属性
- javascript - 为什么即使我们在使用 new 关键字创建对象时手动将其更改为另一个构造函数,也会执行 A 对象的构造函数?
- c# - C# 性能 - 线性数组访问与随机访问
- java - java.util.ConcurrentModificationException -- 执行 IO 操作时的错误(不是列表)
- command-line-interface - 如何使 PMD 不计算带有括号的行作为代码行?
- vue.js - vue-cli 如何支持可选的 SCSS,例如主题?
- xml - Add IntervalSeconds Element to Script Based Monitor via MP Author
- eloquent - 使用 Eloquent Query Builder 查询