You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1升级后如何为active_storage_blobs表设置忽略指定列?

实现方案

你可以通过以下两种方式给ActiveStorage内置的ActiveStorage::Blob模型配置忽略列,逻辑和自定义模型配置ignored_columns完全一致,只需要确保配置在模型类加载完成后执行即可:

方式1:通过初始化器全局配置(推荐)

在config/initializers/目录下新建active_storage.rb文件,写入以下代码:

Rails.application.config.to_prepare do
  # 如果遇到数组不可修改的报错,可以替换为下行写法
  # ActiveStorage::Blob.ignored_columns = ActiveStorage::Blob.ignored_columns.dup + %w[service_name]
  ActiveStorage::Blob.ignored_columns += %w[service_name]
end

使用to_prepare回调是为了适配开发环境的类重载机制,确保每次类重载后配置仍然生效。

方式2:重写ActiveStorage模型类

在app/models/active_storage/目录下新建blob.rb文件,写入以下代码:

class ActiveStorage::Blob < ApplicationRecord
  self.ignored_columns += %w[service_name]
end

Rails会自动优先加载你自定义的模型类,合并框架内置的模型逻辑,该写法更直观,适合需要对ActiveStorage做多处自定义修改的场景。

注意事项
  • 该配置为临时过渡方案,等你完成全量数据迁移、service_name列的业务逻辑适配完成后,请及时移除该忽略配置,避免后续Rails版本升级出现兼容问题
  • 配置添加完成后需要重启Rails服务、清理缓存才能生效

内容的提问来源于stack exchange,提问作者cdmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:03