如何获取 rails 中所有孩子 active-storage 的附件?
How to get all childs active-storage attachments in rails?
假设有 2 个模型。
用户模型:
has_many :posts
post 型号:
belongs_to:用户
has_many_attached :files, 依赖: :destroy
我要的就是用户的所有文件。类似于:
有 _may :post_files , 通过: posts, class_name: "XXX"
或任何其他可以给我用户所有文件的方式。
所以我想要属于用户的所有 post 的所有文件。喜欢 user.post_files
结构应该是这样的
user.rb <-- 用户模型
has_many :posts
post.rb <-- Post 型号
belongs_to :user
has_many_attached :files
这样你就可以做到
Post.post_files
或
Post.with_attached_files.find(params[:id])
总之。
附件属于 Post,不属于 User,因此无需调用 User 模型
您的 post 模型充当用户和附加文件之间的外部参照 table 对吧?
您已将一个用户定义为具有许多 post,将一个 post 定义为具有许多附件。使用 has_many through:
将允许用户查看 post
的所有附件
用户模型:
Class User < ...
has_many :posts
has_many attached_files, through: :posts
post 型号:
Class Post < ...
belongs_to :user
has_many_attached :files, dependent: :destroy
Class AttchedFiles < ...
belongs_to :post
这使您可以执行以下操作
User.first.attached_files
这将 return 用户的所有附件 return 由 User.first 声明
编辑
我相信这就是您要找的东西
谢谢大家的回答。我找到了解决方案。
has_many_attached :files
实际上设置了两个has_many关系:
has_many :files_attachments
和
has_many :files_blobs
所以在user.rb(父模型)中我们可以简单地有:
has_many :files_attachments, through: :posts
这样,您可以 user.files_attachments 获取一个用户的所有帖子文件。
假设有 2 个模型。
用户模型:
has_many :posts
post 型号:
belongs_to:用户
has_many_attached :files, 依赖: :destroy
我要的就是用户的所有文件。类似于:
有 _may :post_files , 通过: posts, class_name: "XXX"
或任何其他可以给我用户所有文件的方式。
所以我想要属于用户的所有 post 的所有文件。喜欢 user.post_files
结构应该是这样的
user.rb <-- 用户模型
has_many :posts
post.rb <-- Post 型号
belongs_to :user
has_many_attached :files
这样你就可以做到
Post.post_files
或
Post.with_attached_files.find(params[:id])
总之。
附件属于 Post,不属于 User,因此无需调用 User 模型
您的 post 模型充当用户和附加文件之间的外部参照 table 对吧?
您已将一个用户定义为具有许多 post,将一个 post 定义为具有许多附件。使用 has_many through:
将允许用户查看 post
用户模型:
Class User < ...
has_many :posts
has_many attached_files, through: :posts
post 型号:
Class Post < ...
belongs_to :user
has_many_attached :files, dependent: :destroy
Class AttchedFiles < ...
belongs_to :post
这使您可以执行以下操作
User.first.attached_files
这将 return 用户的所有附件 return 由 User.first 声明
编辑我相信这就是您要找的东西
谢谢大家的回答。我找到了解决方案。
has_many_attached :files
实际上设置了两个has_many关系:
has_many :files_attachments
和
has_many :files_blobs
所以在user.rb(父模型)中我们可以简单地有:
has_many :files_attachments, through: :posts
这样,您可以 user.files_attachments 获取一个用户的所有帖子文件。