активный администратор многие ко многим показывает индекс PG ::UndefinedColumn: ОШИБКА: случаи столбцов.product_id не существует

#ruby-on-rails #many-to-many #activeadmin

#ruby-on-rails #многие ко многим #activeadmin

Вопрос:

В моей Case модели

   has_many :case_products, dependent: :destroy
  has_many :products, through: :case_products
 

в моей Product модели

 class Product < ActiveRecord::Base
  has_many :cases
end
 

в CaseProduct

 class CaseProduct < ActiveRecord::Base
  belongs_to :case
  belongs_to :product
end
 

как я могу отобразить, сколько обращений у меня есть для каждого продукта?

в active admin product.rb

 ActiveAdmin.register Product do
  permit_params :id, :name ,case_ids: []
  index do
    column :id
    column :name
    column "case" do |m|
      m.cases.count
    end

    actions

  end
  
  show do
      attributes_table do
        row :id
        row :name
        row :case
        
      end 
  end

end
 

Я получил эту ошибку

 PG::UndefinedColumn: ERROR:  column cases.product_id does not exist
LINE 1: SELECT COUNT(*) FROM "cases" WHERE "cases"."product_id" = $1
                                           ^
: SELECT COUNT(*) FROM "cases" WHERE "cases"."product_id" = $1
 

Ответ №1:

Вы должны установить ассоциации в продукте, подобном вашей модели Case:

 class Product < ActiveRecord::Base
  has_many :case_products, dependent: :destroy
  has_many :cases, through: :case_products
end
 

Если вы используете только has_many :cases Rails, предполагается, что модель Case имеет product_id столбец.