2009-10-09 4 views

답변

45

당신은 attr_readonly를 사용하려면 : 같은 읽기 전용 나열

속성은 새 레코드를 생성하는 데 사용되지만 업데이트 작업이 필드를 무시합니다.

class Customer < ActiveRecord::Base 
    attr_readonly :your_field_name 
end 
+0

귀하의 질문에 대한 정답이지만 실제 문제에 대한 "정확한"해결책은 약간 다릅니다 ... 다른 질문에 대한 의견을 참조하십시오. – averell

+0

그렇지 않으면 답을 +1하십시오. – averell

2

그리고 필드는 삽입시에 항상 및 정의 "올바른"(즉, 현실의 정확한 표현)에 의해인가?

첫 번째 (그리고 구성표가있는 경우에만) 입력란을 입력 할 때 사용자가 실수를 저 지르지는 않았습니까?

+1

실제로 사용자가 입력하지 않으면 컨트롤러가 설정합니다. 내가 막기를 원하는 것은 변경된 사후 요청을 사용하여 누군가를 수정하는 것입니다. – fresskoma

+8

이 경우에는 "읽기 전용"필드를 전혀 사용하지 않으려 고합니다. 당신이하고 싶은 것은 당신의 모델에서'attr_protected' 문을 사용하여 필드가 대량 업데이트에 의해 변경되는 것을 방지하는 것입니다. 더 나은 점은'attr_accessible'를 사용하여 선택된 필드 만 대량 업데이트가 가능하도록 만드는 것입니다. – averell

+2

여기에 파이프 들어가기 : attr_readonly의 적절한 사용 예는 해당 필드를 변경하면 데이터 무결성이 손상 될 수 있다고 생각합니다. 나는 field : valid_at를 가지고 있으며, 그 필드를 변경하면 결코 일어나지 않아야한다. 왜냐하면 핵심 알고리즘에 뭔가 잘못되었다는 것을 의미하기 때문이다. 그렇게되면 갑판에 모두 손이 듭니다. 모든 데이터가 좋지 않을 수 있습니다. 따라서 나는 그것을 결코 변경할 필요가 없으며, 다른 코드의 버그로 인해 변경되는 것을 막아주고 싶다. 시도가 바뀌었다면 나는 크게 큰 소리로 폭파하고 싶다. – Houen

관련 문제