0

我希望我可以继承一个 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

有可能完成这项工作吗?

4

1 回答 1

1

由于shopManager通过belongs_to. 您的模型上没有premium_shop定义方法Manager,因此出现NilClass错误。

如果要为PremiumShop类定义这样的关联,则必须明确指定它。

belongs_to :premium_shop, class_name: "PremiumShop", foreign_key: :shop_id

根据您的需要,您还可以考虑研究“rails 单表继承”。

于 2012-11-26T22:57:09.967 回答