2012-11-26 7 views
0

나는 activerecord 모델을 상속 할 수 있었으면 좋겠다. 부모 클래스가 될 수있을만큼 하위 클래스를 사용하고 싶다. 이것은 그럴 듯하지는 않지만 AR 관계는 하위 클래스에서 작동하지 않는 것처럼 보입니다.Ruby on Rails에서 활성 레코드 모델 상속

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

belongs_to을 통해 정의한 연관 때문에 Manager 클래스의 일부 인스턴스에 대해 shop 메서드가 존재합니다. Manager 모델에 premium_shop 메서드가 정의되어 있지 않으므로 NilClass 오류가 발생했습니다.

PremiumShop 클래스에 대해 이러한 연결을 정의하려면 명시 적으로 지정해야합니다.

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

필요에 따라 "단일 테이블 상속 (rails single table inheritance)"을 고려해보십시오.

+0

이 경우 class_name : "PremiumShop"이 필요하지 않다고 생각합니다. 연관 이름': premium_shop'에서 추측 되었습니까? 아니면? – 244an

관련 문제