2017-02-10 12 views
0

アトリビュートがジョイントテーブルに存在し、JSONであるアトリビュートの値に基づいて、昇順にソートすることはできますか?ジョイントテーブルのJSON属性でActiveRecordリレーションをソート

まず、メンバーを照会してskillsテーブルに参加しています。 {'technical': 'accounting', 'general': 'planning'}

私のような何かをしたいと思います

if project.status == 'complex' 
    members.sort_by {|x| x['data']['technical']} 
else 
    members.sort_by {|x| x['data']['general']} 
end 

だから私は、次のことができます。各メンバーのレコードに

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つのキー、 technicalgeneral、 すなわちとJSONでさまざまなケースに基づいてアルファベット順にスキルに基づいて発注します。これは可能ですか?

私がこれを明確に説明していない場合は、お詫び申し上げます。

答えて

0

ピュアSQLソリューション:nをしたい場合によるため

順序に基づいて結果(skills.data - > '技術')::テキスト

Sort_byソリューション:

members.sort_by! {|メンバー| member.data ['technical']。tos)

関連する問題