#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
столбец.