Учитывая следующие модели:
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...





Вы можете сделать это следующим образом:
form.has_many :workouts, for: [:workouts, form.object.workouts.ordered_by_id] #, ...