私はテーブル 'Users'を持っています。 ユーザーは3つの異なる状態(state1、state2、state3)で3回(レコード)myテーブルに存在することができます。 最初のstate1が作成され、次にstate2が作成されます。 state3が存在する場合、私はstate1とstate2をもう見たくありませんが、後でそのためにテーブルに保持する必要があります。 3つのレコードはすべて同じUIDです。Selective ActiveRecord
すべてのユーザーを収集する場合、私は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オブジェクトにどのように変換できますか?要するに
:User.magic_function事前に
おかげで、各UUIDの唯一の最新の状態を返すために! Wouter