因项目需要,要对分别在两个不同的遗留系统中的不同结构的表进行数据合并查询。需要支持排序和二次搜索。
由于数据位于两个不同的遗留系统,数据库连接的指向不同,且两个表的结构也不同,因此也无法直接使用 arel 和直接的 SQL 查询,只能分别从两个同的系统中获取数据结果集进行整合后进行 Array 操作。具体见以下代码:
# 在OA系统上的OaPerson
class OaPerson < ActiveRecord::Base
establish_connection :oa_system
self.abstract_class = true
end
# 在Agent系统上的Agent
class Agent < ActiveRecord::Base
establish_connection :agent_system
self.abstract_class = true
end
# 从两个不同的AR Model中获取结果集合并
@people = OaPerson.select(“user_id,user_name”) + Agent.select(“agent_id as user_id, agent_name as user_name”)
# 按user_name字段排序
@people.sort_by(&:user_name)
# 以key_word作模糊查询
@people.select {|p| user_name.include?(’key_word’)}
1、针对以上应用场景,预想的方案勉强可以实现要求的功能,但肯定性能不佳。请教各位先进,有更好的解决方案吗? 2、结果集数组如何实现倒序的排列?