假設我有一個'用戶'表。 用戶可以在我的表中以3種不同狀態(state1,state2,state3)存在3次(記錄)。 首先創建狀態1,然後創建狀態2,... 如果狀態3存在,我不想再查看狀態1和狀態2,但我必須將它們留在我的表中,以備後用。 所有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對象?
總之:User.magic_function只返回最新狀態的每個UUID的
提前感謝! Wouter