たぶん私は間違っているかもしれませんが、ここに私の問題があります:
@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
経由を定義することですが.build
、同時にattr_accessible :user_id
、誰かがこのレコードの user_id を他のユーザーの ID に設定する可能性があるため、これは望ましくありません!!
.build
外部キーはこの Mass Assignment Security から除外され、関連付けまたは.create
メソッドを介して新しいオブジェクトを作成すると強制されると思いました。
助言がありますか?に戻りたくない
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
その種の目的を無効にするため.build