2011-05-10 3 views
1

모델에서 일련의 명명 된 범위를 사용하여 쿼리를 생성합니다.이 쿼리에는 다른 부울 필드가있는 다른 테이블과의 조인이 있습니다 . 해당 열의 값에 액세스하면 문자열 ("0"및 "1")이 반환됩니다.레일 모델이 테이블의 열이 아닌 값을 해석하게합니다.

모델에 이러한 열을 해석하는 방법을 알려주는 DRY 방법이 있습니까? (나는 accesor를 덮어 쓰는 방법을 쓸 수는 있지만 올바르게 느껴지지 않습니다.)

레일 2.3.8을 사용하고 있습니다. 당신이 read_attributewrite_attribute 방법을 의미 "접근을 재정의"에 의한 경우

+0

코드를 사용할 수 있습니까? –

답변

2

는,이 절대적으로이 작업을 수행하는 올바른 방법입니다. Rails 타입은 자동으로 필드를 캐스팅합니다. AFAIK 타입 캐스팅에 영향을 미치는 직접적인 방법은 없습니다. setters/getters을 오버라이드합니다. 무결성을 위하여

, 예 :

def admin_user 
    read_attribute(:admin_user) == "1" ? true : false 
end 

def admin_user(v) 
    write_attribute(v ? "1" : "0") 
end 

참고 : 가장 좋은 방법은 ActiveRecord Callbacks 것보다 복잡한 경우 (암호 암호화를 말한다)에 대한. 그곳에서 예제를 살펴보십시오.

+0

답장을 보내 주셔서 감사합니다. 결국 이런 식으로 끝내게되었습니다. 저는 모델에 대해 부울로 해석되어야한다는 힌트를 얻을 수있는 방법이 있기를 바랍니다. – adivasile

관련 문제