別のメソッドまたは定数でクラス属性のリストを定義したいので、コードでリストを数回使用できます。
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 を呼び出す方法はありますか?