假设我有一个'用户'表。 用户可以在我的表中以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