跨多个类的attr_accessor?

Shp*_*ord 0 ruby module class attr-accessor

我有一个包含许多不同类的单个模块(分成单独的文件).每个类都有相同的集合attr_accessor,那么如何重用它而不必重复attr_accessor块?

我现在在做什么......

# dog.rb
module Animals
   class Dog
      attr_accessor :name, :color, :age 
   end
end

# cat.rb
module Animals
   class Cat
      attr_accessor :name, :color, :age 
   end
end

# rodent.rb
module Animals
   class Rodent
      attr_accessor :name, :color, :age 
   end
end
Run Code Online (Sandbox Code Playgroud)

我试着这样做没有运气......

# animals.rb
module Animals
   attr_accessor :name, :color, :age 
end
Run Code Online (Sandbox Code Playgroud)

我需要直接在我的应用程序中访问这些模块(这是一个Rails应用程序).例如:Animals::Dog.give_water

saw*_*awa 7

您对该模块的使用Animal是错误的.将它用作命名空间对您的目的没有任何好处.你应该包括它们.

module Animals
  attr_accessor :name, :color, :age 
end

class Dog
  include Animals
end

class Cat
  include Animals
end

class Rodent
  include Animals
end
Run Code Online (Sandbox Code Playgroud)

或者,您可以Animal转换为类,并从中进行子类化.

class Animals
  attr_accessor :name, :color, :age 
end

class Dog < Animals
end

class Cat < Animals
end

class Rodent < Animals
end
Run Code Online (Sandbox Code Playgroud)

顺便说一下,类已经暗示它可能有多个实例,因此为类创建一个复数名称是多余的.你也不一致.