私は10のモデルとそれらの3に起こるいくつかの追加のカスタムメソッドを必要としています。ActiveRecordのモデルのカスタムメソッドの追加は
ActiveRecord:Baseのカスタムサブクラスを作成し、そこにメソッドを定義し、そこから3つのモデルを継承させることができます。しかし、これを達成するためのより多くの "Ruby/Rails"の方法がありますか?
乾杯
私は10のモデルとそれらの3に起こるいくつかの追加のカスタムメソッドを必要としています。ActiveRecordのモデルのカスタムメソッドの追加は
ActiveRecord:Baseのカスタムサブクラスを作成し、そこにメソッドを定義し、そこから3つのモデルを継承させることができます。しかし、これを達成するためのより多くの "Ruby/Rails"の方法がありますか?
乾杯
モジュールをmixinとして使用してください。
http://www.juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/
例えばを参照してください。 /lib
で
あなたはモジュールを作成し、あなたが持っている可能性がClass
宣言
後
module StagedVersionStuff
def has_staged_version?
end
def apply_staged_version
end
def discard_staged_version
end
end
を持っているし、その後のモデルで、あなたが
include StagedVersionStuff
を持ってこれらのメソッドを持つようにしたいですクラスには以下が含まれます:
module StagedVersionMethods
def has_staged_version?
end
def apply_staged_version
end
def discard_staged_version
end
end
Model.send :include, StagedVersionMethods
あなたのクラスは何をしていますか?サブクラスかモジュールを使用するかどうかの選択は、クラス自身がであることを基にしたセマンティクスの問題です。です。
大変感謝しています。これは私が後にしたことのようなものです。 – Paul