0

別のメソッドまたは定数でクラス属性のリストを定義したいので、コードでリストを数回使用できます。

attr_accessor :a, :b, :c

a)attr_accessor呼び出しの結果 (setter と getter の束)から属性のリストを取得するのが難しい。b)属性のリストにいくつかのメタデータを入れる必要があります。リストを定数に移動すると、うまくいきます。これで、リストを使用して必要なことを実行しながら、シンボルの配列を に渡すことができるようになりましたattr_accessor。例えば:

class A
  FIELDS = {a:'field a', b:'field b'}

  def self.field_names
    FIELDS.keys
  end

  attr_accessor *field_names
end

しかし、私はこれを多くの同様のクラスで実行したいので、DRY に保つために、すべての繰り返しコードを親クラスに移動する必要がself.field_namesありattr_accessor *field_namesます。しかし、これはうまくいきません:

class A
  FIELDS = {a:'field a', b:'field b'}

  def self.field_names
    FIELDS.keys
  end

  attr_accessor *field_names
end

class B < A
  FIELDS = {c: 'field c'}
end

attr_accessorまだAのメソッドを受け取っているからです。core をいじらずにこれを行うことはできますClassか?

親から子クラスのメソッドで attr_accessor を呼び出す方法はありますか?

4

1 に答える 1