2013-01-17 4 views
0

'Option'이라는 해당 모델이있는 데이터베이스 테이블이 'Option'이라고 가정 해 봅시다. 이 테이블의 구조는 간단하고 다음과 같이 ... 다음과 같이 데이터 행이 될 수키/값 쌍에 대한 레일에 동적 메서드 구현

id -> primary key, auto increment 
name -> key 
value -> value for the key 

샘플 ...

id name       value  
---- ---------------------------- ----------- 
1 default_view     DAILY  
2 show_registration_number  0   
3 notification_method   IMMEDIATE  

내가 원하는 모든 옵션 (키) 액세스 할 수 있어야한다는 것입니다 방법 이름으로 나에게. 예를 들어

다음과 같이한다면 ...

@options = Options.find(:all) 

은 가능한 '매일'로 나에게 값을 반환해야하며, 유사 @options.show_registration_number 0으로 값을 반환해야하는 @options.default_view 같은 데이터에 액세스하는 것입니다.

또한 가능한 경우 수정이 허용 될지 여부는 @options.default_view = 'MONTHLY'이며 데이터베이스의 해당 레코드를 업데이트해야합니다.

답변

0

이렇게하면 거의 당신이 찾고 있던 답을 얻을 것이다 : http://code.dblock.org/how-to-define-enums-in-ruby

그것은 const_missing에 의존하고 '열거'의 요소가 Option::default_view

그러나 귀하의 경우, 상수로 정의되어 있다고 가정 method_missing을 사용하여이 코드를 적용하는 방법을 쉽게 알 수 있으므로 Option.default_view

의 다른 예가 포함되어 있습니다보석, 그래서 당신은 찾고있는 대답 this code 찾아 볼 수