【发布时间】:2012-10-31 06:13:33
【问题描述】:
我有一个 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
实际的代码比较复杂,但为了简单就足够了。
我想我可以将代码的公共部分放在一个地方,然后在所有模型中使用它。
这是我想到的:
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
显然它不起作用有两个原因:
-
CommonItem不知道我调用的类方法。 -
WIDTH和HEIGHT常量在CommonItem而不是Item1中查找。
我尝试使用include 而不是extend,class_eval 和类继承的一些方法,但没有任何工作。
我似乎遗漏了一些明显的东西。请告诉我什么。
【问题讨论】:
标签: ruby-on-rails ruby class inheritance