2014-04-01 1 views
0

모델이 특정 상태 (예 : sign_in_count> 1)를 입력 한 후에 만 ​​레일스 모델 속성이 변경되지 않도록 보호하려고합니다. 주위를 둘러 보았다 나는 그것을 조건으로 사용할 수있는 속성을 보호하기 위해몽고 이드 : 속성이 변경되지 않도록 보호

attr_readonly 

를 사용하는 사람들을 볼? 그렇지 않은 경우 대체 솔루션이 있습니까? 감사.

+0

정의를 설정할 수 있습니까? – Newben

+0

@Newben rails 3.2.17 –

+0

확인 내 편집을 볼 수 있습니다. – Newben

답변

0

나는 당신이하고 싶은 것을 정말로 이해하지 못한다. 그래서 여기에 몇 가지 일반적이지만 관련된 목적이있다. Btw, rails 4의 속성은 보호되지만 protected_attributes gem을 사용하면 rails 3 동작을 수행 할 수 있습니다.

btw, ruby에서 사용할 수있는 freeze 메서드는 고정 된 개체의 수정을 방지하기 위해 호출 할 수 있습니다. (객체가 실제로 고정되어 있는지 확인하려면 객체에 frozen?을 호출하면 true 또는 false가 반환됩니다.

또 다른 말은 changed—attributes을 호출하여 모델의 변경 상태를 확인할 수 있다는 것입니다. 이는 원래 값과 상대적으로 변경된 필드의 해시를 반환합니다.

편집 : 당신은 물론이 문장

attr_readonly :some, :attributes unless some_condition 

및 버전은 당신이 무엇을 사용하는 레일

def some_condition 
    sign_in_count > 1 
end