Ruby on rails 根据联接表中的JSON属性对ActiveRecord关系排序

Ruby on rails 根据联接表中的JSON属性对ActiveRecord关系排序,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如何根据属性的值(该属性存在于联接表中且为JSON)按升序对ActiveRecord关系进行排序 首先,我查询成员并加入skills表 members = Member .select(' member.id, member.skills_id, member.name, member.position, skills.data as data') .join('left join skills on skills.id = member.skills_id') 在每个

如何根据属性的值(该属性存在于联接表中且为JSON)按升序对ActiveRecord关系进行排序

首先,我查询成员并加入
skills

members = Member
.select('
  member.id,
  member.skills_id,
  member.name,
  member.position,
  skills.data as data')
.join('left join skills on skills.id = member.skills_id')  
在每个成员记录中,
skills.data
是一个JSON,有两个键,
technical
general
, ie:
{'technical':'accounting','general':'planning'}

我想做一些事情,比如

if project.status == 'complex'
  members.sort_by {|x| x['data']['technical']}
else
  members.sort_by {|x| x['data']['general']}
end
因此,我可以根据成员的技能按字母顺序排列,根据不同的情况排列。这可能吗


如果我没有解释清楚,我深表歉意。

纯SQL解决方案:如果您想要基于顺序的n个结果

排序依据(skills.data->“technical”)::文本

按解决方案进行排序:

成员们,按顺序排序!{| member | member.data['technical'].to|s}