active_record-acts_as gem子父类关联查询失效问题
问题:切换active_record-acts_as gem后关联查询失效
问题背景
项目原本使用已废弃的acts_as_relation gem,现切换为active_record-acts_as gem,环境为Ruby 3.2.2、Rails 6.1.7.10。
代码与表结构
模型代码
class Product < ActiveRecord::Base actable as: :as_product end class Car < ActiveRecord::Base acts_as :product, as: :as_product end class Truck < ActiveRecord::Base acts_as :product, as: :as_product end
表结构定义
- Product表字段:
idas_product_idas_product_type
- Car表字段:
idvin
问题现象
使用acts_as_relation时,Product与Car会自动通过as_product_id和as_product_type字段建立关联,执行p = Product.last; p.vin可直接获取对应Car记录的vin值;切换为active_record-acts_as后,系统不会生成关联查询,执行p.vin时抛出错误:undefined method 'vin' for #<Product>。
迁移变更记录
原使用acts_as_relation时的创建表迁移:
create_table "products", :as_relation_superclass => true do |t| end
切换gem后执行的修改表迁移:
change_table :products, :as_relation_superclass => false do |t| end
内容的提问来源于stack exchange,提问作者Matey Johnson
相关产品推荐
相关产品推荐

