ActiveAdmin has_many с пользовательским порядком сбора - PullRequest
1 голос
/ 06 марта 2019

Учитывая следующие модели:

class WorkoutProgram < ApplicationRecord
  has_many :workouts, dependent: :destroy
end

class Workout < ApplicationRecord
  belongs_to :workout_program
end

Есть ли способ установить пользовательский порядок в ActiveAdmin has_many?Я не хочу включать перетаскивание, поэтому sortable не вариант.Идея состоит в том, чтобы показывать тренировки в том же порядке, в котором они были добавлены при редактировании WorkoutProgram.

В качестве временного решения Я использую другое отношение has_many в WorkoutProgram только для этой цели,Поэтому я добавил к модели:

has_many :ordered_workouts, -> { ordered_by_id },
           class_name: Workout.to_s, dependent: :destroy, inverse_of: :workout_program

и затем использовал ее на странице ActiveAdmin следующим образом:

form.has_many :ordered_workouts, allow_destroy: true do...

1 Ответ

2 голосов
/ 06 марта 2019

Вы можете сделать это так:

form.has_many :workouts, for: [:workouts, form.object.workouts.ordered_by_id] #, ...
...