1
フィールドname
とversion
を持つgraphs
テーブルがあります。レコードが挿入されるたびに、名前はデータベースに存在しない場合は0
、それ以外の場合はmax(version) + 1
となります。一意の名前ごとに最高のバージョンのレコードのリストを取得したいと思います。次のコードは、この行いますグループ内の特定のフィールドの最大値を持つレコードを見つける方法
def self.latest_versions
Graph.group(:name).maximum(:version).map{ |k,v| find_by name: k, version: v}
end
が、私はちょうど範囲チェーンアクティブレコードリレーションを使用してこれを行うにははるかに速い方法があるかどうだろうか?
これはうまくいかないと思いますが、すべてのグラフに最大バージョン番号のレコードが返されます。 :nameフィールドで区別されるさまざまな種類のグラフがあります。各タイプのグラフには独自のバージョンがありますので、名前が 'line_plot'の最新のグラフはバージョン5で、名前が 'bar_plot'の最新のグラフはバージョン7です。コードはバージョン7のみを返します。 'bar_plot'、しかし、私はバージョン7または 'bar_plot'とバージョン5の 'line_plot'の両方を返す必要があります。 – Obromios
今、誤解をおかけして申し訳ありません。 –
@Obromios私は 'answer'を更新しました。あなたはそれを確認することができます。 –