2

Ruby on Rails 3.0.9를 사용하고 있으며 특정 문자열로 시작하는 모든 attr_accessor 속성 이름을 검색하고 싶습니다.'attr_accessor'속성 이름을 검색하는 방법은 무엇입니까?

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

은 내가 :prefix 문자열로 시작하는 모든 attr_accessor 속성 이름을 검색하고 싶습니다 : 그건 내 모듈에 I가 ...,

입니다.어떻게하면됩니까?

답변

5

일반적으로 attr_accessor은 접근 자 메서드를 만들고 그와 같은 리플렉션을위한 특정 후크가 없습니다. 내가 | |

(MyClass.instance_methods - Object.instance_methods).grep(/^prefix/).sort 
+0

Ruby <1.9에서 작동합니다. 그런 다음,'instance_methods'는 문자열 배열로 변환해야합니다. – Chubas

+0

@tadman 코드를 사용하여 생성 된 심볼 배열에서 "setter"메소드 만 가져와야합니다. 어떻게해야합니까? – Backo

+1

@Chubas 어떤 이유로 든 Ruby 1.9에서 Symbol 배열을 grep 할 수 있습니다.이 이유 때문에 편리합니다. – tadman

0

당신은 YourClass.instance_methods.select을 {사용하여 잡아 수 있습니다 : 당신이 그런 일을해야하는 경우가 alias_method_chain 주변에 attr_accessor 랩 확장을 쓸 수 중 하나 아니면 그냥이 함께 할 수 있습니다 i.to_s = ~/prefix_ /}.

관련 문제