小编Puf*_*ffo的帖子

活动管理员:如何在嵌套模型的json列上添加sortable

如何将jsonb顺序查询传递到sortable:Active Admin列的选项?

我的模型结构如下:

# 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
Run Code Online (Sandbox Code Playgroud)

:ranked_scoreJSON结构是:

# level.ranked_scores
{"stage_1"=>111, "stage_2"=>222, "stage_3"=>333} 
Run Code Online (Sandbox Code Playgroud)

我试图排序User使用Level:ranked_scores属性如下:

# 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 …
Run Code Online (Sandbox Code Playgroud)

postgresql json ruby-on-rails activeadmin columnsorting

6
推荐指数
1
解决办法
948
查看次数