Rails-Mongoid-Devise: при создании появляется сообщение об ошибке «Пользователь не может быть пустым» - PullRequest
0 голосов
/ 23 сентября 2018

Проще говоря, я использую Mongoid и Devise в приложении Rails 5.2.В файлах модели пользователь has_many :trips и поездка belongs_to :user.После отправки формы для создания новой Поездки сохранение не выполняется с ошибкой «Пользователь не может быть пустым».Я могу решить эту проблему, установив @trip.user = current_user перед операцией сохранения, и все выглядит хорошо в базе данных и в последующих запросах, но я не помню, чтобы я делал это раньше.Прошло много времени с тех пор, как я по-настоящему работал с Rails (начиная с 1.1, действительно - да, так долго), но я не помню, чтобы мне приходилось делать это с моделью ActiveRecord.Я думал, что установка ассоциаций в модели должна была позаботиться об этом.Произошли ли серьезные изменения или что-то другое в Mongoid?Я запутался в хэше params (используя trip_params.to_h) перед сохранением, потому что мне нужно преобразовать строку в массив, но я не вижу никаких указаний на пользователя в хэше даже перед тем, как изменить его.

1 Ответ

0 голосов
/ 23 сентября 2018

Если вы создаете поездку на экземпляре пользовательского объекта, например

@user = User.find(params[:user_id])

, тогда

@user.create_trip(attributes)

, тогда вам не нужно устанавливать пользователя при создании поездки. Но если высоздаете поездку напрямую, как

Trip.new(attributes)
trip.save!

, тогда вы должны указать пользователя при создании поездки

Никакая активная запись не заботится, если все ассоциации, указанные для объекта, заполнены или нет.не устанавливает ассоциации для нас

...