0

2 つの異なるテーブルの 2 つの列を追加する最大値を返すクエリを Rails で作成するのに苦労しています。私は 2 つのモデルを持っています。それらにAudioとという名前を付けましょう。私がやりたいことは、Rails で次の SQL クエリを作成することです。PropertyProperty"id, audio_id, starts_at, collection_name""id and length"

SELECT MAX(property.starts_at + audio.length) FROM audio
  INNER JOIN property WHERE property.audio_id = audio.id
  AND property.collection_name = 'some_name';

関連付けはbelongs_to :audio、Property とhas_many :propertiesAudio のためだけです。collection_name が 'some_name' であるすべてのプロパティを取得し、それぞれを反復処理して、最大値を変数に保存し、最大値を返すように構築できます。

def full_length
  full_lengths = []
  Property.where(:collection_name => 'some_name').each do |p|
    full_lengths << p.audio.length + p.starts_at
  end
  full_lengths.max
end

しかし、それはパフォーマンスの点であまり良くないように見えますし、Ruby/Rails のやり方ではないようです。これを可能にする ActiveRecord メソッドの組み合わせはありますか?

4

1 に答える 1