ruby-on-rails - 如何获取 ActiveStorage 属性列表(附件名称)?

标签 ruby-on-rails rails-activestorage

例如我有模型

class User < ApplicationRecord
  has_one_attached :avatar
  has_one_attached :diploma

  has_many_attached :photos
  has_many_attached :files
end

如何获取某些型号的附件名称列表(分别用于 has_one_attachedhas_many_attached )?
[:avatar, :diploma][:photos, :files]在这种情况下。

最佳答案

一个不依赖于命名约定的解决方案,它将根据 Rails 自己的内部结构为您提供所需的内容:

  • has_one_attached

  • User
      .reflect_on_all_attachments
      .filter { |association| association.instance_of? ActiveStorage::Reflection::HasOneAttachedReflection }
      .map(&:name)
    
  • has_many_attached

  • User
      .reflect_on_all_attachments
      .filter { |association| association.instance_of? ActiveStorage::Reflection::HasManyAttachedReflection }
      .map(&:name)
    

    关于ruby-on-rails - 如何获取 ActiveStorage 属性列表(附件名称)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484599/

    相关文章:

    mysql - ruby rails : Why first active record query takes longer?

    ruby-on-rails - 通过模块共享范围?

    ruby-on-rails - 删除附件时跳过 ActiveStorage 文件清除

    ruby-on-rails - 是不是更喜欢使用:local/:disk option on production environment when using ActiveStorage? 会不会让我无法备份文件?

    ruby-on-rails - 使用对事件存储 rails 的 react 上传图像

    ruby-on-rails - Rails ActiveStorage - 默认情况下加载 has_on_attached/has_many_attached 关联

    mysql - 如何在rails中输入一个更大的整数值(超过10位)

    ruby-on-rails - 从 heroku 下载部分数据库

    ruby-on-rails - 在 Ruby 1.9 和 Rails 3 中使用 SOAP Web 服务?

    ruby-on-rails - Rails 处理对资源的 ActiveStorage 附件所做编辑的方式是什么?