继承Ruby on Rails中的活动记录模型

时间:2012-11-26 22:50:53

标签: ruby-on-rails activerecord models

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

是否可以使这项工作?

1 个答案:

答案 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”。