首页 > 解决方案 > 如何确定主动存储关联?

问题描述

我有一个使用活动存储附件的所有模型的上传表单。这种形式的功能可以根据上传者是 has_one_attached 还是 has_many_attached 来改变。是否有一种方法可以确定给定模型具有哪种关联类型?

标签: ruby-on-railsrails-activestorage

解决方案


以下似乎有效,至少对于 Active Storage。

ModelName.reflect_on_all_associations.select { |a|
  a.class_name == 'ActiveStorage::Attachment'
}

如果您只想要属性名称:

ModelName.reflect_on_all_associations.select { |a|
  a.class_name == 'ActiveStorage::Attachment'
}.map(&:name)

推荐阅读