JOIN ...
Company
.joins(:disclosures)
.group("companies.id")
.select("companies.*, MAX(disclosures.published_at) disclosure_published_at")
.order("MAX(disclosures.published_at)")
`MAX(disclosures.published_at)` `disclosure_published_at`
****
`GROUP BY` `SELECT` SQL
company_cols = Company.column_names.map { |name| "#{Company.table_name}.#{name}" }
Company
.joins(:disclosures)
.group(company_cols)
.select(*company_cols, "MAX(disclosures.published_at) disclosure_published_at")
.order("MAX(disclosures.published_at)")