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

时间:2015-01-19 16:42:19

标签: ruby-on-rails activeadmin

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

我想使用store_id_product在OrderProduct中创建一个链接,但主动管理员只使用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

有一些方法可以做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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表中的主键,则必须为ProductController(由ActiveAdmin.resource Product do ... end生成)提供一种方法来检索该领域的产品。您可以创建new custom actioncustomize the product's retrieval。第二种情况意味着您始终希望按store_id_product检索产品。