CompanyDisclosureというモデルが有り Company

class Company < ActiveRecord::Base
  has_many :disclosures, dependent: :destroy
end

の関係になっています。

ここでDisclosurepublished_atというdatetimeのカラムを持つのですが、複数のCompanyDisclosurepublished_atカラムの最新の物を用いてソートするにはどのような方法があるでしょうか?

現在はCompanylatest_disclosure_published_atというソート用のカラムを追加し、Disclosureの更新時にCompany側の情報を更新しています。

Companyにカラムを追加せずにこのようなソートをするもっと良い方法はありますか?

追記

@yasu さんに教えて頂いた方法でローカルではできたのですが、サーバー上で試してみた所エラーが出てしまいました。

PG::GroupingError: ERROR:  column "companies.code" must appear in the GROUP BY clause or be used in an aggregate function`

サーバー上とローカルでPostgresのバージョンが異なってしまっているのですが、それが原因なのでしょうか…?

Company.joins(:disclosures).
group('companies.id, companies.code').
select('companies.id, companies.code, MAX(disclosures.published_at) disclosure_published_at')

のようにselectするカラムを全てgroupで指定すれば呼び出せるようですが、できれば*で一括で指定したいです。

サーバー上(

psql --version
psql (PostgreSQL) 8.4.20

psql --version
psql (PostgreSQL) 9.5.2