首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

活动存储has_many_attached正在清除以前的上载

has_many_attached 是 Rails 6 中引入的一个新功能,它允许你在一个模型中关联多个文件附件。如果你发现 has_many_attached 正在清除以前的上传文件,可能是由于以下几个原因:

1. 模型定义问题

确保你在模型中正确地定义了 has_many_attached

代码语言:javascript
复制
class User < ApplicationRecord
  has_many_attached :photos
end

2. 保存操作问题

当你保存模型实例时,Rails 会自动处理附件的保存。如果你手动设置了附件,可能会导致之前的文件被清除。

代码语言:javascript
复制
user = User.new
user.photos.attach(io: File.open('/path/to/file'), filename: 'file.jpg')
user.save

3. 更新操作问题

在更新模型实例时,如果你重新赋值附件,之前的文件可能会被清除。

代码语言:javascript
复制
user = User.find(1)
user.photos.attach(io: File.open('/path/to/new_file'), filename: 'new_file.jpg')
user.save

4. 数据库迁移问题

确保你的数据库迁移文件正确地设置了 has_many_attached

代码语言:javascript
复制
class AddPhotosToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :photos, :jsonb, default: {}, null: false
  end
end

5. ActiveStorage 配置问题

确保你的 config/storage.yml 文件正确配置了存储后端(如本地文件系统、Amazon S3 等)。

代码语言:javascript
复制
local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

6. 调试信息

如果你仍然遇到问题,可以添加一些调试信息来查看具体发生了什么。

代码语言:javascript
复制
user = User.find(1)
puts user.photos.attachments.inspect

示例代码

以下是一个完整的示例,展示了如何正确使用 has_many_attached

代码语言:javascript
复制
# app/models/user.rb
class User < ApplicationRecord
  has_many_attached :photos
end

# db/migrate/xxxx_add_photos_to_users.rb
class AddPhotosToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :photos, :jsonb, default: {}, null: false
  end
end

# config/storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# 在控制器中
def update
  @user = User.find(params[:id])
  if @user.update(user_params)
    redirect_to @user, notice: 'User was successfully updated.'
  else
    render :edit
  end
end

private

def user_params
  params.require(:user).permit(:name, photos: [])
end
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Artifactory清理未使用的二进制品的最佳实践

通常,在Artifactory中使用三种技术来管理工件存储: –限制保留多少SNAPSHOT –清除超大缓存 –删除未使用的工件 限制保留多少SNAPSHOT Artifactory具有内置机制来限制构建的...这意味着用户在上载快照工件时需要遵循预定义的模式(大多数客户端会自动处理)。...最高的数字将始终是最新版本。 清除超大缓存 Artifactory的远程存储库将下载的文件存储在缓存中。通常,保留整个缓存是有益的,因为它可以加快下载速度。...但是,如果项目使用的工件有所更改,则值得定期清除缓存。 在Artifactory中有支持此功能的内置系统。要启用自动缓存清除,请转到远程存储库菜单的“高级”部分。...snapshot,或者是 90 天以前的所有 snapshot,这样能够大大减少存储量,加快索引速度。

3.6K00
  • 伊组织对美发起新一轮攻击

    它将向用户显示一个空白的窗口,使恶意软件看起来像一个合法的应用程序。 ? TONEDEAF 2.0还隐藏API,api名称以及dll被存储为字符串,在运行时按需解码和解析。 ?...C2可能正在过滤目标,分析中发送的client_id参数与目标受害者参数不匹配。如果C2接受了ID,将使用和后门需要执行的命令的编码消息进行回复。 ?...还发现最近已生成与C2域匹配的SSL证书: ? 表明攻击者正在过渡到HTTPS通信,提高其OPSEC功能并避免检测。...用户上传的VALUEVAULT和TONEDEAF 2.0,与同一用户上载到VirusTotal的Survey.xls文件仅相隔几分钟,表明这些恶意软件属于攻击的一部分。 ?...与以前的版本相比,此VALUEVAULT采用了更为简化的方法,舍弃了许多功能和字符串, 现在仅支持Chrome密码转储。 ?

    84720

    owasp web应用安全测试清单

    传递的会话令牌 检查是否正在使用HTTP严格传输安全性(HSTS) 身份验证: 用户枚举测试 身份验证旁路测试 强力保护试验 测试密码质量规则 测试“remember me”功能 密码表单/输入上的自动完成测试...测试存储的跨站点脚本 基于DOM的跨站点脚本测试 跨场地泛水试验 HTML注入测试 SQL注入测试 LDAP注入测试 ORM注射试验 XML注入测试 XXE注射试验 SSI注入试验 XPath注入测试...检查弱算法的使用情况 检查是否正确使用salt 检查随机性函数 风险功能-文件上传: 测试文件大小限制、上载频率和文件总数是否已定义并强制执行 测试文件内容是否与定义的文件类型匹配 测试所有文件上传是否有防病毒扫描...测试是否清除了不安全的文件名 测试上载的文件在web根目录中不能直接访问 测试上传的文件是否不在同一主机名/端口上提供 测试文件和其他媒体是否与身份验证和授权模式集成 风险功能-支付: 测试Web服务器和...CVSS v2分数>4.0的所有漏洞 验证和授权问题的测试 CSRF测试 HTML 5: 测试Web消息传递 Web存储SQL注入测试 检查CORS的实现 检查脱机Web应用程序

    2.4K00

    索引重建失败的解决

    在Oracle中创建索引,尤其是大的热表索引(存在很多的活动事务),如果在创建过程中出现异常,例如会话中断(OS层面kill-9),可能会导致Oracle数据字典内已经包含了该索引的信息(诸如像在ind...$的标记位信息不能及时复位),但是却实际没有为该索引分配段,进而导致需要重新建立索引的时候,可能会抛出异常,如下所示,在删除索引IDX1时,会提示索引对象826976号正在创建或者被重建,无法删除,(在...调用dbms_repair存储过程的online_index_clean函数,参数就是上面的索引对象号,这个函数从Oracle 10.2开始支持,在10.2以前,需要等待SMON自己完成清理的工作, This...,存在很多活动的事务,导致SMON无法以NOWAIT获得对象锁,进而需要等待很久的时间,才能完成清理,在此之前,就无法执行索引重建的工作。...因此,才需要这个函数,代替SMON,执行手工清理,清除临时信息。

    1K10

    通过3个步骤实现安全的云存储

    企业可以使用云计算供应商为其提供额外的工具来保护数据,但仍有来自用户端的工作要做。 如果企业在任何云计算应用程序中存储文件,则需要安全的云存储。...应用程序创建者负责保护他们的产品基础设施,但企业仍然负责保护其帐户和存储在其中的数据。越来越多的信息安全团队正在构建零信任安全架构来实现这一点。...保护云存储安全的三种主要方法是通过数据丢失预防、威胁预防和帐户监控。 1.云中的数据丢失预防 有许多方法可以将数据丢失防护工具整合到企业的安全云存储基础设施中。...一旦拥有帐户监控系统,它将定期扫描任何欺诈活动。该工具可以识别何时出现异常行为,例如来自其他国家/地区的登录或大量文件上载/下载。...寻找自己安全云存储解决方案 谷歌,微软和其他SaaS平台认识到公司可能需要更多本地提供的云安全解决方案。

    98140

    【ISO14229协议】协议分析

    我们做上位机的时候,要监控收发是否正常,以下就是常用的,再看这些的时候,记得先用ISO 15765去掉外壳看 0:SingleFrame  (代表单帧,首个字节为0) 1:FirstFrame     ...) 14229代码含义(不全,常用) 10:诊断对话控制服务 11:ECU复位服务 27:安全访问服务 28:通讯控制服务 3E:测试仪存在服务 83:访问定时参数服务 84:固定数据传送服务 3D:存储地址写入...85:控制DTC设置服务 86:根据事件响应服务 87:链路控制服务 22:数据标识符读取服务 23:存储地址读取服务 24:换取数据标识符服务 2A:周期标识符数据读取 2C:动态定义数据标识符 2E...:数据标识符写入 14:清除诊断信息 19:DTC信息读取 2F:输入输出控制标识符 31:程序控制 34:请求下载 35:请求上载 36:传送数据 37:请求退出传送

    16510

    ASP六大内建对象

    Active Server Pages 提供内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息(如用户首选项)。本文简要说明每一个对象。...Request 对象使您能够访问发送给服务器的二进制数据,如上载的文件。 Response 对象 可以使用 Response 对象控制发送给用户的信息。...包括直接发送信息给浏览器、重定向浏览器到另一个 URL 或设置 cookie 的值。 Server 对象 Server 对象提供对服务器上的方法和属性进行的访问。...Session 对象 可以使用 Session 对象存储特定的用户会话所需的信息。...当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除;而用户在应用程序中访问页时,这些变量始终存在。

    60210

    Redis的大key问题

    通常指数据内存使用量非常大的数据,比如set里放了相当多的数据 ps:我们用set存储了单个用户的文章点赞数据,有个小伙伴天天无聊就在那给文章点赞,点了几百万,那set里就有了几百万数据,这个可能就是一个大...1.数据结构拆分,比如我们这里有个活动数据,活动有活动商品数据,这俩就进行了拆分,并没有放一起 2.数据分片,比如后面加序号,进行多实例的拆分 六....大key的删除问题 6.1 Redis 4.0以前大key删除 4.0 以前 string,list,set,hash 不同数据类型的大 key,删除方式有所不同。...4.0 以前要优雅的删除就是针对不同的类型 写脚本,拆分链表,hash 表,分批删除。...被动删除 被动删除是指 Redis 自身的 key 清除策略,一个 大 key 过期或者被淘汰时,如何被清除,会不会导致阻塞?4.0 以前自动清除是有可能阻塞主线程的。

    50440

    获取和保存数据 - 集成 - 构建文档 - ckeditor5中文文档

    如果需要使用JavaScript以编程方式访问值(例如,在onsubmit处理程序中验证输入的数据),元素仍有可能存储原始数据。...要更新替换的的值,请使用editor.updateSourceElement()方法。...手动检索数据 当你: 使用Ajax请求而不是与HTML表单的经典集成 实现单页面应用程序 使用与经典编辑器不同的编辑器类型(因此,不能使用以前的方法) 您可以使用editor.getData()方法从编辑器中检索数据...为此,您需要将引用存储到编辑器中,因为 - 与CKEditor 4不同 - 没有全局CKEDITOR.instances属性。...或者任何编辑器功能都注册了“待处理动作”(例如,正在上载图像)。 这样可以在保存内容或图像上传等正在进行的操作未完成之前自动保护用户离开页面。

    3.9K20

    AVS之Notifications概述

    Alexa技能的通知,当它第一次通过Alexa Skills Store.启用 - Alexa引导用户访问Amazon Alexa App的页面,在那里用户可以启用当前正在使用的Alexa skill...注意: 对于以前启用的Alexa技能,用户可能会遇到请求,以便在AVS-enabled产品的同时启用通知.用户与技能交互时,可能要求用户选择并通知,并将用户引导至Amazon Alexa App 以批准请求...ClearIndicator - 指示你的客户端清除所有活动的视觉和音频指示 另外,你的产品必须通过将IndicatorState作为上下文对象包含适合的事件,将其通知指示符的状态传送给AVS....对于所有产品, 当收到SetIndicator指令时,必须立即通知最终用户,即使正在进行的交互中,例如Alexa语音和媒体播放.这是因为通知映射到AVS交互模型中的Alerts通道....,如果为true.则提供的URL必须立即播放.在音频文件不可用的情况下,你的产品应该播放本地存储的新通知音频文件作为后备.

    1.3K00

    Travis CI 教程:入门

    Travis 现在正在关注您对 MovingHelper 存储库的更改。 推送到 GitHub 使用新创建的 GitHub 仓库返回选项卡。从 “......注意:您可能会收到有关以前缀为 a 的名称的警告 。 被系统保留,但无论如何,使用点 - Travis 将寻找一个文件名为 正是 .travis.yml,这样的点是安全的,在这里使用。...按照与以前相同的步骤创建新的拉取请求。将此新拉取请求命名为 徽章,然后单击 “* 创建拉取请求”*。 Travis 将再次开展业务 - 由于您没有更改任何代码,测试将继续通过: ?...使用 post-build 挂钩,它可以使用最少的配置自动将构建结果上载到 AWS S3 存储桶。 . 您可以 设置预构建脚本以安装和后期构建从 密钥 链中删除证书 以创建签名的构建。 ....如果您正在创建已签名的构建,则还可以添加 构建后脚本, 以便在合并后测试通过时自动将构建上载到 HockeyApp 或 iTunes Connect。 然而, Swift 并不总是阳光和棒棒糖。

    5.1K21

    Outlaw黑客组织武器更新分析

    最新版本的代码试图删除以前所有相关的文件和代码,包括自己的代码(以确保更新正在运行的组件)和其他网络罪犯组织的攻击代码,并创建新工作目录‘/tmp/.X19-unix‘放置工具并提取文件。...成功入侵后另一个变体将执行命令,从受感染机器上收集信息(CPU核心数,用户,计划任务,正在运行的进程,已安装的操作系统以及CPU和内存信息),将密码更改为随机字符串存储在/tmp/up.txt中。... 运行后会删除以前攻击的文件和脚本,保持静默从而逃避检测。如果系统先前已被感染了,它会尝试杀死正在运行的矿工程序及其所有相关活动。...init和init2脚本确保杀死所有其他正在运行的挖矿服务,并授予工作目录777权限确保所有文件都可执行。还发现init0脚本, 该脚本会无差别清除所有矿工。 ?...该组织将公开漏洞利用作为攻击手段,广泛的进行IP地址扫描活动,在特定时期内攻击特定区域。该小组会利用先前攻击活动中的一些细节来最大程度地获利。

    89310

    CleanMyMac4.12最新版电脑深度清理软件

    在苹果电脑的储存空间管理中,有一类被称为其他(系统数据)的文件,包括临时文件、缓存、应用插件和扩展等,这种文件会占用不少的储存空间,很多mac用户并不明白该如何清理其中的无用内容或垃圾文件。...我们可以在访达中找到某个软件的缓存目录,甄别并直接删除其中的无用内容。但对于大部分苹果电脑用户来说,小编并不建议大家进行如此繁琐且有风险的操作。下载一款专业好用的清理软件,才是最安全便利的选择。...三、mac磁盘空间如何精简macOS有文件快照保留的机制,会储存一些应当被删除或被上载至云端的文件至磁盘内的某个分区,这种机制在空间允许时能优化用户体验。在磁盘工具中,这类文件被注为可清除。...尽管系统会在空间不足时释放可清除空间,但它还是会干涉到我们日常向电脑中存储内容。因此,我们可以使用CleanMyMac中的“释放可清除空间”功能提前清理可清除文件,精简电脑的磁盘空间。...尽管这一功能效果显著,但耗时较长,大家定期清除即可。CleanMyMac X全新版下载如下:https://wm.makeding.com/iclk/?

    67420

    TIA V15.1发布,来看看有什么新功能

    这意味着不再需要通过 CPU 进行同步和上载。...TIA 用户管理组件 TIA 用户管理组件 (UMC) 提供了全球用户管理的可能性。这意味着可以跨项目定义和管理用户和用户组。用户和用户组也可以从 Microsoft 活动目录应用。...实际值的快照的 XML 导出 实际值的快照在导出过程中通过公开存储在 XML 文件中。因此, 可以通过 XML 文件比较不同的快照。...站点上载由以下数据扩展: 配方、数据日志和用户文件 PLC 离线/离线比较 自动触发比较两个 plc, 可以在不同的项目。 自动保护块 可以使用开放 API 专有知识保护块。...V15.1 产品包的一部分 成本中心报表, 包括关税 支持直接在硬件目录中 SINAMICS 驱动器的 SINAMICS 配置 (以前仅支持 GSDML) 可用性改进 可用性方面的各种小改进 S7-

    1.7K20

    一个号称完全无法检测到的Linux后门

    Ngrok挖矿僵尸网络活动正在Internet上扫描配置不当的Docker API端点,并且已经用新的恶意软件感染了无数服务器。...确实,Ngrok挖矿僵尸网络在过去两年中一直都非常活跃,但不同的是,新活动主要针对配置错误的Docker服务器,并利用它们在受害者的基础架构上运行带有加密矿工的恶意容器。...除此之外,攻击者还设法将新创建的容器与服务器的根目录绑定,从而使主机访问或修改系统上的任何文件,造成破坏。...通过使用绑定配置,攻击者还可以控制主机的cron工具,从而修改主机的cron以每分钟执行下载的有效负载。 容器逃逸技术使得攻击者能够完全控制受害人的基础架构,因此Doki的威胁程度可见一斑。...尽管2020年1月14日,Doki已上载到VirusTotal,并在此后进行了多次扫描,但仍设法躲藏了六个月以上。令人惊讶的是,目前它仍然无法被61个顶级恶意软件检测引擎中的任何一个所检测到。

    91020

    如何使用Tahoe-LAFS将您的数据保存在云中

    通过添加到计算机池可以动态增加存储空间。要了解更多信息,请访问Tahoe-LAFS文档。 开始之前 注意本指南中的步骤需要root权限。请务必root使用sudo前缀或以前缀执行以下步骤。...告诉加入的计算机它可以连接的当前活动对等体。 单点故障的可能性。但, 如果没有介绍人,则必须在每个节点上编辑配置文件,并在每次将另一个节点插入网格时添加新的IP地址。...在本地计算机上设置Tahoe-LAFS客户端 要在网格中安全地上载和下载文件,必须在本地计算机上设置客户端节点。...该界面的一个有用功能是鸟瞰图,它可以为您提供整个网格,显示活动和非活动节点,连接状态和错误,可用的总存储空间以及其他详细信息。 1. 默认情况下,Web服务器在端口上侦听环回接口3456。...,并且只会在再次运行命令时上载已更改的文件。

    2.5K20

    红队发现关键漏洞,可远程控制ATM机

    AddFile() 接受多部分表单 POST 请求,并将上传的文件存储到网络目录"/Files/telechar/"中。 这意味着未经身份验证的用户可以上传任何文件,然后通过网络浏览器再次查看。...恶意行为者可以监控机群中各个自动取款机的活动。控制台还允许将 ATM 降为管理模式、上传文件、重新启动和完全关闭。...需要进行进一步检查,以确定是否可以将定制软件上载到个别自动取款机上,以执行银行卡外渗、Swift 转账重定向或其他恶意活动。不过,此类额外测试不在评估范围之内。...CVE-2023-35189 还可用于清除 ScrutisWeb 上的日志,并删除恶意行为者曾在那里活动的证据。...从客户端基础架构中的这一立足点可能会发生额外的漏洞利用,使其成为恶意行为者面向互联网的支点。

    25230

    在Ubuntu 16.04上安装WordPress

    ON wordpress.* TO 'wpuser'; 退出MySQL: quit 安装WordPress src在您网站的目录下创建一个目录,以存储WordPress源文件的新副本。...如果您将来安装新版本并需要恢复到以前的版本,这将非常有用: sudo mv latest.tar.gz wordpress-`date "+%Y-%m-%d"`.tar.gz 创建一个public_html...$args; 配置最大文件大小上载设置以允许更大的文件 默认情况下,PHP将Web上载限制在2兆字节以下。...如果您遇到插件或窗口小部件的问题,请检查其文档以查看是否需要PHP扩展。 注意:上面的软件包名称假设您正在使用PHP 7.0版。...如果您从Ubuntu存储库安装了PHP 5,请修改命令以使用php前缀而不是php7.0。例如,而不是安装php7.0-gd,使用php-gd。

    5.1K20
    领券