按 'created_at' 字段对 Spree 管理面板中的产品进行排序

Sorting products in Spree admin panel by 'created_at' field

我正在尝试在我的 Spree 管理面板的 'Products' 选项卡中显示附加列 (created_at)。我已经使用类似于 the standard name and master price columns 的污损来完成它。将带有 sortable link 的 header 添加到 table 的污损看起来像这样:

Deface::Override.new(
    virtual_path: 'spree/admin/products/index',
    name:         'created_at_column_header_in_products',
    insert_before: "[data-hook='admin_products_index_header_actions']"
    text: "
        <th class='text-center'>
            <%= sort_link @search, 'created_at', Spree.t(:created_at) %>
        </th>
    "
)

我可以点击 "CREATED AT" link 然后被查询的 url 是

http://localhost:3000/admin/products?q%5Bdeleted_at_null%5D=1&q%5Bs%5D=created_at+asc

但是,我在控制台中看不到 SQL 查询,它将按 created_at 排序产品(而按名称排序会产生 SQL 按名称排序的查询)和管理面板中的结果确实似乎未分类。

为什么我的解决方案不起作用?

编辑:

我尝试了 spree_products table 中的每个字段,唯一适用于此污损覆盖的字段是 nameslug。这个东西靠什么?

我解决了这个问题。我发现 Spree::Product 模型中有类似 whitelisted_ransackable_attributes 的东西,它只有 slug 属性。我已经在装饰器中覆盖了它:

Spree::Product.class_eval do  
  self.whitelisted_ransackable_attributes = %w[slug created_at]
end