Может быть, я делаю это неправильно, но вот моя проблема:
@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 этой записи идентификатор другого пользователя, что было бы плохо !!
Я думал, что внешние ключи были исключены из этой защиты массового назначения и были применены, если вы создаете новый объект через ассоциацию .build
или .create
методы.
Есть предложения?Я не хочу возвращаться к
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
, потому что это побеждает цель .build