我有一个Subscription模型,然后有子类SubscriptionCleaning,订阅有一个subscription_type_id,其中1是SubscriptionCleaning。我也有一个SubscriptionType模型。
我想要发生的事情就是当我这样做时
Subscription.find(100)
订阅类型ID为1
自动转换SubscriptionCleaning
我已尝试在订阅类
上执行初始化方法after_initialize :my_test
#
def my_test
if self.subscription_type_id.present?
self.becomes!('SubscriptionCleaning'.constantize)
end
end
NoMethodError的这个错误:未定义的方法`type ='对
我可以在控制台中逐行完成,但它返回正常但不是订阅的初始化
有没有人对如何让它发挥作用有任何想法?
答案 0 :(得分:0)
查看单表继承,该列由type
列解析。 http://api.rubyonrails.org/classes/ActiveRecord/Base.html#class-ActiveRecord::Base-label-Single+table+inheritance
<强>更新强>
该链接不是很有用。简短说明,您可以删除subscription_type_id
列并添加type
列。如果您创建了一个模型SubscriptionCleaning < Subscription
,它将与Subscription
模型保持在同一列中,并且您可以获得开箱即用的“类型转换”。