如何使用非外键字段 link 活动管理员上的实体

How to link entities on active admin using non foreign key fields

我想创建一个 link 来引用另一个模型,但我没有可用的主键字段。

我想使用 store_id_product 在 OrderProduct 中创建一个 link,但活动管理员只使用 id_product:

            ActiveAdmin.register Product
              index do |customer|
                  column :id_product, :sortable => false (foreign key)
                  column :description, :sortable => false
                  column :url, :sortable => false
                  column :store_id_product, :sortable => false (not a foreign key)
              end
            end


            ActiveAdmin.register OrderProduct
              index do |customer|
                  column :id_order, :sortable => false (foreign key)
                  column :date_order, :sortable => false
                  column :id_customer, :sortable => false
                  column :store_id_product, :sortable => false
              end
            end

有什么方法可以做到这一点??

谢谢!!

您可以通过将块传递给 column 方法来自定义 table 单元格。

ActiveAdmin.register OrderProduct do
  index do |customer|
    ...
    column :store_id_product, :sortable => false do |order_product|
      link_to 'Product', product_path(order_product.store_id_product)
    end
  end
end

如果 store_id_product 没有指向 products table 中的主键,那么你必须为 ProductController 提供一种方法(由 ActiveAdmin.resource Product do ... end) 通过该字段检索产品。您可以创建一个 new custom action or customize the product's retrieval。第二种情况意味着您总是希望通过 store_id_product.

检索产品