2011-12-27 4 views
3

こんにちは。私は私の特定のケースドン」に関するホームクラスでこのRailsでアソシエーションモデルを削除する

module Settings 
    attr_reader :person 
    attr_reader :address 

    def self.included(base) 
     base.belongs_to :city 
     base.belongs_to :entity 
     [...] 
    end 

    [...] 

end 

と似たような都市モデルの関連性を持っているsettings.rbで

class Home < ActiveRecord::Base 
    include settings 
end 

さて、私はこれに似た何かを持っています意味をなさないそして私は自分のコードDRYを維持するためにそれを削除する方法を見つける必要があります。

ありがとうございました!

注:投票の前にフィードバックをお願いします。

+0

私はActiveRecordのような方法は思い出せませんが、私は反対側からこの問題にアプローチします。私はあなたが最初に必要でない団体を追加しないほうがずっと良いと思います。オプションの1つは、すべての 'belongs_to'呼び出しを、必要な関連付けのリストを受け入れる別のメソッドに移動することです。その場合は、モジュールをインクルードした後に明示的にそのメソッドを呼び出さなければなりませんが、すべてを追加して不要な関連付けを削除するよりも優れています。 –

+0

例外が1つしかない場合は、別のコードをHomeクラスに入れます。モジュールを再利用する他のクラスはインクルードを使用します。 DRYの多くは常に便利ではありません。 – eveevans

+0

私はあなたがこれについて少しペナルティをしていると思います...インスタンスがそれらに応答しないように、メソッドを削除する理由はありません。その背後にある理由が何であれ、まあ、それは不明です。なぜこれをやりたいのかを明確にしてください。 –

答えて

2

メソッドを使用しない場合は、remove_methodを使用してメソッドを削除してください。

+0

私のモデルクラスremove_method:cityでやることができますか? – workdreamer

+0

はい、できます。 –

+0

それは動作します!ありがとうございました! – workdreamer

関連する問題