Rails-Mongoid-Devise:创建时出现错误消息 "User can't be blank"

Rails-Mongoid-Devise: On create, error message "User can't be blank"

简单地说,我在 Rails 5.2 应用程序中使用 Mongoid 和 Devise。在模型文件中,用户 has_many :trips 和旅行 belongs_to :user。提交表单以创建新行程时,保存失败并显示错误 "User can't be blank"。我可以通过在保存操作之前设置 @trip.user = current_user 来解决这个问题,并且在数据库和后续查询中看起来都很好,但我不记得以前必须这样做。自从我使用 Rails 进行任何实际工作以来已经有一段时间了(从 1.1 开始,真的 - 是的,那么久),但我不记得必须使用 ActiveRecord 模型来做这件事。我在想,在模型中设置关联应该可以解决这个问题。是否发生了重大变化,或者 Mongoid 有什么不同?我在保存之前确实弄乱了 params 哈希(使用 trip_params.to_h),因为我需要将字符串转换为数组,但即使在我更改它之前,我也没有在哈希中看到任何用户指示。

如果您在用户对象的实例上创建行程,例如

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

然后

@user.create_trip(attributes)

如果您直接创建行程,则无需在创建 trip.But 时设置用户

Trip.new(attributes)
trip.save!

那么您必须在创建行程时指定用户

如果为对象指定的所有关联都已填充,则没有活动记录会注意它不会为我们设置关联