我希望我能继承一个activerecord模型,并使用子类,因为我可以使用父类。这似乎不是这种情况,AR关系似乎不适用于子类。
class Manager < User
belongs_to :shop
end
class Shop < ActiveRecord::Base
has_many :managers
end
class PremiumShop < Shop
end
和
@premium_shop = manager.shop # Finds the shop.
@premium_shop = manager.premium_shop # Does not find the shop, NilClass:Class error
是否可以使这项工作?
答案 0 :(得分:1)
由于您通过shop
定义的关联,Manager
类的某些实例存在belongs_to
方法。您的premium_shop
模型未定义Manager
方法,因此NilClass
错误。
如果要为PremiumShop
类定义此类关联,则必须明确指定此关联。
belongs_to :premium_shop, class_name: "PremiumShop", foreign_key: :shop_id
根据您的需要,您可能还会考虑研究“rails single table inheritance”。