3

어쩌면 내가 여기에 잘못 만하고있는 중이 야하는 것은 내 문제입니다 :레일 협회는 없습니다 대량 할당 할 수 있습니다 외래 키

@restaurant = current_user.restaurants.build(params[:restaurant]) 

이것은 USER_ID가 current_user.id로 설정되어 새로운 레스토랑 객체를 구축합니다. 레스토랑 모델에 attr_accessible :user_id을 설정 한 경우에만 작동합니다. 당신이

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: 
user_id 

을하지 않으면 내가 원하는 사람이 몇이 레코드의 USER_ID를 설정하는 다음이 가능하기 때문에 user_id.build를 통해 정의하지만 동시에 나는 attr_accessible :user_id을하지 않을 것입니다 다른 사용자의 ID는 나쁜 것입니다!

외계 키가이 일괄 적 할당 보안에서 제외되었다고 생각하고 연결 .build 또는 .create 메서드를 통해 새 개체를 만드는 경우 적용되었습니다.

제안 사항? 나는 패배의 종류 .build

+0

매개 변수에 'id'가 없다고 확신합니까? – apneadiving

+0

예! params 해시에 ID가 없습니다. – patrickdet

+1

Rails 3.2.0.rc1을 사용하고 있습니까? 그건 알고있는 버그 야. https://github.com/rails/rails/issues/4051 (해결) – Damien

답변

3

의 목적은 당신이 레일 3.2.0.rc1을 사용하고 있기 때문에

@restaurant = current_user.restaurants.build(params[:restaurant]) 
@restaurant.user = current_user 

다시 가고 싶지 해달라고? 그것은 알려진 버그입니다. github.com/rails/rails/issues/4051