如何根据属性的值按升序对ActiveRecord关系进行排序,该属性在连接表中是否存在,并且是JSON?
首先,我查询成员并加入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
是一个包含2个密钥{J} technical
和general
的JSON,
即:{'technical': 'accounting', 'general': 'planning'}
我想做点什么,
if project.status == 'complex'
members.sort_by {|x| x['data']['technical']}
else
members.sort_by {|x| x['data']['general']}
end
因此,我可以根据不同情况按字母顺序排列会员。这可能吗?
如果我没有清楚解释这一点,请道歉。
答案 0 :(得分:0)
纯SQL解决方案:如果您想要基于订单的结果
按(skills.data->'技术')订购::文本
Sort_by解决方案:
members.sort_by! {|会员| member.data ['technical']。to_s}