대량 할당을 피하기 위해 더 체계적인 솔루션을 갖고 싶습니다.민감한 요소를 매개 변수 해시로 바꾸어 레일에서 질량 할당을 피하십시오.
일반적으로 params (양식을 통해 자동 전송 됨)에서 id 또는 user_id를 제거하고 내부적으로 current_user.id (MyController # create에서)로 바꿉니다.
@user = User.create(:params[:user])
@user.update_attributes(:id => current_user.id)
@user.profile.update_attributes(:user_id => current_user.id)
@user.preference.update_attributes(:user_id => current_user.id)
가 짧은/더 건조 방법이 :
내가 생각할 수있는 솔루션은 PARAMS 해시에서 객체를 생성 한 후 (부모와 자식 객체) update_attributes 내부 값에 민감한 속성을 대체하는 것입니다 이것을 말하는가?
선호도, 프로파일 등이 (빌드 메소드를 통해 생성 된) 사용자의 하위 객체 인 경우, 사용자의 외래 키를 찾고 부모에게 전달한 값으로 자동으로 대체하는 메소드를 작성하려면 어떻게해야합니까?
감사합니다.
감사합니다. Zachary. attr_accessible로하려는 일을 어떻게 처리하는지 자세히 설명해 주시겠습니까? 나는 attr_protected 등을 알고 있지만 DRY 방식으로 보호 된 속성을 할당하는 방법을 모르겠습니다. – AdamNYC
그것은'attr_protected'와 같은 방식으로 작동하지만 블랙리스트 대신 화이트리스트입니다. 따라서'name','email','password'라는 이름의 속성을 가지고 있다면'attr_accessible : name, : email, : password'를 실행하면 그 3 가지 속성 만 매쓰 할 수 있습니다. –
죄송합니다,하지만 내 질문은 실제로 컨트롤러에서 이러한 보호 된 특성을 처리하는 방법입니다. – AdamNYC