2016-11-21 13 views
0

サブスクリプションモデルは子クラスSubscriptionCleaningを持ち、サブスクリプションにはsubscription_type_idがあり、1はSubscriptionCleaningです。私はSubscriptionTypeモデルも持っています。アクティブなレコードの子クラスを親クラスの初期化時に自動的にキャスト

私が行うとき、私は何が起こるしたいことは、たとえば、それは自動的に私がやってみたこと

をSubscriptionCleaningキャストするために1

のサブスクリプションタイプIDを持っている

Subscription.find(100) ですサブスクリプションクラスの初期化メソッド

after_initialize :my_test 
# 
def my_test 
    if self.subscription_type_id.present? 
     self.becomes!('SubscriptionCleaning'.constantize) 
    end 
end 

このエラーはNoMethodError :未定義のメソッド `タイプ=」

私はラインコンソールの線でそれを行うことができますし、それがうまく返しではなく、サブスクリプションの初期化などのため

は、誰もがこの作業を取得する方法上の任意のアイデアを持っていますか?

答えて

0

typeカラムで解決される単一テーブルの継承を見てください。 http://api.rubyonrails.org/classes/ActiveRecord/Base.html#class-ActiveRecord::Base-label-Single+table+inheritance

UPDATE:

リンクは非常に有用ではありません。簡単な説明では、subscription_type_id列を削除し、type列を追加することができます。モデルSubscriptionCleaning < Subscriptionを作成すると、Subscriptionモデルと同じ列に保持され、そのまま「タイプキャスト」を取得します。

関連する問題