Рельсы 3 ActiveAdmin. Как установить порядок сортировки по умолчанию для связанной записи?

У меня есть модель отгрузки и модель счета-фактуры. Счет-фактура относится к отгрузке.

Поэтому я добавил порядок сортировки по умолчанию для отгрузки, подобный этому...

config.sort_order = 'file_number_desc'

Но теперь я хочу добавить тот же порядок сортировки для счетов-фактур (таблица отгрузок — это та, в которой есть столбец file_number), но это, похоже, не работает:

config.sort_order = 'shipments.file_number_desc'

person leonel    schedule 28.02.2012    source источник


Ответы (2)


Хорошее решение @Siwei, я бы просто использовал вместо scope :joined, который по умолчанию показывает фильтр в верхней части списка под названием «Присоединенные», следующее:

controller do
  def scoped_collection
    GenericItem.includes(:vendor)
  end
end

Что изменяет контроллер ActiveAdmin для использования этой области по умолчанию, не показывая ее пользователю.

person yorch    schedule 18.09.2012

согласно этому сообщению на его официальном сайте (мне интересно, почему сопровождающий не включил это сообщение об импорте в документ ^_^): https://github.com/gregbell/active_admin/pull/623

Шаг 1. предполагая, что у вас есть «generic_items», принадлежащие «поставщику», а у поставщика есть атрибут: имя.

# app/models/generic_item.rb
class GenericItem < ActiveRecord::Base
  belongs_to :vendor
end

# app/models/vendor.rb
class Vendor < ActiveRecord::Base
  has_many :generic_items
  # attr_accessor: name
end

Шаг 2. теперь вы хотите сделать заказ "vendor.name" на странице "admin/generic_items".

# app/admin/generic_items.rb
ActiveAdmin.register GenericItem do

  scope :joined, :default => true do |generic_items|
    generic_items.includes [:vendor]
  end 

  index do 
    # other column definition... 
    column :vendor_id, :sortable => "vendors.name" do |generic_item|
      generic_item.vendor.name if generic_item.vendor
    end
  end
end  

P.S. однако фильтр отключится, как только вы это сделаете. сейчас. надеюсь, что эта проблема может быть исправлена ​​как можно скорее.

person Siwei    schedule 03.04.2012