同じ構造を持ついくつかのモデルを持つ Rails アプリがあります。
class Item1 < ActiveRecord::Base
WIDTH = 100
HEIGHT = 100
has_attached_file :image, styles: {original: "#{WIDTH}x#{HEIGHT}"}
validates_attachment :image, :presence => true
end
class Item2 < ActiveRecord::Base
WIDTH = 200
HEIGHT = 200
has_attached_file :image, styles: {original: "#{WIDTH}x#{HEIGHT}"}
validates_attachment :image, :presence => true
end
実際のコードはもっと複雑ですが、簡単にするためにはこれで十分です。
コードの共通部分を 1 か所にまとめて、すべてのモデルで使用できると思います。
これが私の頭に浮かぶものです:
class Item1 < ActiveRecord::Base
WIDTH = 100
HEIGHT = 100
extend CommonItem
end
module CommonItem
has_attached_file :image, styles: {original: "#{WIDTH}x#{HEIGHT}"}
validates_attachment :image, :presence => true
end
明らかに、次の 2 つの理由で機能しません。
CommonItem
私が呼び出すクラスメソッドについてはわかりません。WIDTH
およびHEIGHT
定数は のCommonItem
代わりに検索されますItem1
。
include
の代わりに、クラス継承extend
のいくつかの方法を使用しようとしましたが、どれも機能しません。class_eval
明らかな何かが欠けているようです。何を教えてください。