2012-02-05 13 views
1

私のアプリでは、モジュールを含むモデルがあります。このモデルには 'format'という属性があり、どのモジュールを組み込むべきかを決定します。たとえば、format == 0の場合、モデルはinclude SingleEliminationformat == 1ならモデルはinclude DoubleElminationです。これを行う最善の方法は何ですか?ActiveRecordに動的にモジュールを含める

答えて

1
def include_format 
    case format 
    when 1 
    extend SingleElimination 
    when 2 
    extend DoubleElmination 
    end 
end 

after_initialize :include_format 
+0

私には質問があります。 – Max

+0

@Max 'include'はメソッド本体の文脈で定義されていないので、私は' extend'を使います。したがって、受け入れられた答えは 'MethodNotDefined'を送出します。さらに、クラス本体で呼び出されたときに、その答えがそのように動作することを記述した 'include'があります。しかしそれはメソッド本体の中では異なるコンテキストであり、 'extend'メソッドはそれをどこに追加するのでしょうか。 –

+0

私は、その洞察に感謝します。私は、その区別を認識す​​ることはできませんでした。ただし、実装は正しくありません。 after_initializeフィルタではformatを呼び出すことはできません。私は引数エラーが少なすぎます。これを修正するために、ラムダを使用しなければなりませんでした。私は私のために働いたものを編集しました。 – Max

関連する問題