「ユーザー」というテーブルがあるとします。ユーザーは、3 つの異なる状態 (state1、state2、state3) で、テーブルに 3 回 (レコード) 存在できます。最初に state1 が作成され、次に state2 が作成されます... state3 が存在する場合、state1 と state2 はもう見たくありませんが、後の目的のために、それらをテーブルに保持する必要があります。3 つのレコードはすべて同じ uuid を持っています。
すべてのユーザーを収集したい場合は、User.all を使用できません (同じユーザーの 3 つの状態すべてを取得するため)。
私のモデルでこれに対する短い解決策はありますか? 現在、すべての uuid を収集しており、各 uuid について最新の状態を確認し、それらのレコードを配列に入れています。この配列の問題は、ActiveRecord オブジェクトではなく単なる「配列」であることです。
@uuid = []
@users = [] #will contain only the latest states at the end
User.all.each do |u|
@uuid << u.uuid unless @uuid.includes?(u.uuid)
end
@uuid.each do |u|
if user = User.find_by_state_and_uuid(3, u)
@users << user
elsif user = User.find_by_state_and_uuid(2, u)
@users << user
elsif user = User.find_by_state_and_uuid(1, u)
@users << user
end
end
このロジックを ActiveRecord オブジェクトに変換する方法はありますか?
要するに、各 uuid の最新の状態のみを返す User.magic_function
前もって感謝します!ウーター