小编Iva*_*van的帖子

使用独立代码扩展Ruby类

我有一个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
Run Code Online (Sandbox Code Playgroud)

实际的代码更复杂,但这足以简化.

我想我可以将代码的公共部分放在一个地方,然后在所有模型中使用它.

以下是我的想法:

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
Run Code Online (Sandbox Code Playgroud)

显然它不起作用有两个原因:

  1. CommonItem 我不知道我调用的类方法.
  2. WIDTH并且HEIGHT查找常量CommonItem …

ruby inheritance ruby-on-rails class

5
推荐指数
1
解决办法
173
查看次数

标签 统计

class ×1

inheritance ×1

ruby ×1

ruby-on-rails ×1