2010-04-10 4 views
0

"레일 같은"무엇입니까? 모델의 속성을 설정 한 후에 수정하려면 다음을 수행해야합니다.콜백을 사용해야합니까, 아니면 속성을 재정의해야합니까?

def url=(url) 
    #remove session id 
    self[:url] = url.split('?s=')[0] 
    end 

또는?

편도 또는 다른 방법으로 어떤 이점이 있습니까? 그렇다면 왜? 그렇지 않은 경우 일반적으로 어느 것이 더 일반적입니까?

답변

2

분명히이 두 가지 사례는 서로 다릅니다.

수정 된 속성 에 액세스해야 레코드가 저장되기 전에에 액세스해야하는 경우 첫 번째 작업을 수행해야합니다. 예를 들어, URL을 설정하고 수정 된 값을 DB에 저장하기 전에 일부 조건에 대해 한 번에 확인하려고합니다.

두 번째 것은 데이터베이스에 저장하기 직전에 속성을 사용하여 원하는 작업 만 수행하려는 경우 적합합니다. 따라서 설정 순간과 저장 순간 사이에 액세스하면 수정되지 않은 값을 얻게됩니다.

+1

어떻게 든 값의 유효성을 검사해야하는 경우 속성 접근 자에서 변환하는 것이 좋습니다. –

관련 문제