使用ActiveStorage给出模型
scala_library(
name = "my_jar",
srcs = # ...
deps = [
"@maven//:com_chuusai_shapeless_2_12",
],
)
如何获取所有未附加ReportFile的文件所在的报告。
答案 0 :(得分:1)
附件关联具有以下命名约定:_attachment。在您的情况下,这将是file_attachment。
由于这是常规的ActiveRecord关联,因此可以使用它进行联接。那么,您要查找的查询是:
Record.where(id: RecordFile.where.not(id: RecordFile.joins(:file_attachment)).pluck(:record_id))
答案 1 :(得分:0)
Rails 5中有一种left_joins
方法,因此您可以使用它代替includes
(或eager_load
,在这里工作原理相同),因为在这种情况下它更适合。此外,为获得所需内容,您真正应该联接的表是active_storage_attachment
,它与file_attachment
到ReportFile
相关联。因此,我认为获得所需东西的最好方法是:
Report.left_joins(report_file: :file_attachment).where(active_storage_attachments: { id: nil })
答案 2 :(得分:0)
Report.joins("left join report_files on reports.id = report_files.report_id").where("report_files.file is null")
可以工作
答案 3 :(得分:-1)
Report.eager_load(:report_file).where(report_file: {file: nil})
应该工作
答案 4 :(得分:-1)
Report.includes(:report_files).where('report_files.file =?',nil)
参考: https://apidock.com/rails/ActiveRecord/QueryMethods/includes