Как получить имена атрибутов attr_accessor? - PullRequest
2 голосов
/ 16 августа 2011

Я использую Ruby on Rails 3.0.9, и я хотел бы получить все attr_accessor имена атрибутов, начиная с определенной строки.То есть

... в моем модуле у меня есть:

attr_accessor :prefix_attribute_name1,
              :prefix_attribute_name2,
              :prefix_attribute_name3,
              ...
              :attribute_name1,
              :attribute_name2,
              ...

и Я хотел бы получить все имена атрибутов attr_accessor, которые начинаются со строки :prefix. Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 16 августа 2011

Как правило, attr_accessor просто создает методы доступа и не имеет каких-либо особых хуков для такого отражения.Если вам нужна такая вещь, вы можете либо написать расширение, которое обернет attr_accessor с помощью alias_method_chain, либо вы можете просто обойтись этим:

(MyClass.instance_methods - Object.instance_methods).grep(/^prefix/).sort
0 голосов
/ 16 августа 2011

Вы можете получить его, используя YourClass.instance_methods.select {| i | i.to_s = ~ /prefix_/casts.

...