How do I pass in a jsonb order query into the sortable:
option for an Active Admin column?
My model is structured like this:
# User Model
class User < ActiveRecord::Base
has_one :level
end
# Level Model
class Level < ActiveRecord::Base
belongs_to :user
end
# Level Migration
create_table "levels", force: :cascade do |t|
t.integer "user_id"
t.jsonb "ranked_scores"
end
The :ranked_score
json structure is:
# level.ranked_scores
{"stage_1"=>111, "stage_2"=>222, "stage_3"=>333}
I have tried to sort the User
using a Level
's :ranked_scores
attribute as follows:
# app/admin/user.rb
ActiveAdmin.register User do
controller do
def scoped_collection
end_of_association_chain.includes(:level)
end
end
index do
column "Stage 1 Score", sortable: "level.ranked_scores -> 'stage_1'" do |user|
user.level.ranked_scores['stage_1']
end
end
end
ActiveAdmin.register Level do
belongs_to :user
end
The url generated to sort the colums is
http://localhost:3000/admin?order=levels.ranked_scores%5B%27stage_1%27%5D_desc
but the columns are not sorted in descending order for stage_1
.
Any ideas for what is going wrong here?