Ruby on rails Rails Mongoid设计:创建时,错误消息“;用户可以';“不要空白”;

Ruby on rails Rails Mongoid设计:创建时,错误消息“;用户可以';“不要空白”;,ruby-on-rails,mongoid,Ruby On Rails,Mongoid,简单地说,我正在Rails 5.2应用程序中使用Mongoid和Desive。在模型文件中,用户有多个:trips,Trip属于:User。提交表单以创建新行程时,保存失败,错误为“用户不能为空”。我可以通过在保存操作之前设置@trip.user=current_user来解决这个问题,并且在数据库和后续查询中看起来都不错,但我不记得以前必须这样做。我已经有一段时间没有用Rails做过任何真正的工作了(从1.1开始,真的-是的,那么长),但我不记得用ActiveRecord模型做过。我在想,在模

简单地说,我正在Rails 5.2应用程序中使用Mongoid和Desive。在模型文件中,用户
有多个:trips
,Trip
属于:User
。提交表单以创建新行程时,保存失败,错误为“用户不能为空”。我可以通过在保存操作之前设置
@trip.user=current_user
来解决这个问题,并且在数据库和后续查询中看起来都不错,但我不记得以前必须这样做。我已经有一段时间没有用Rails做过任何真正的工作了(从1.1开始,真的-是的,那么长),但我不记得用ActiveRecord模型做过。我在想,在模型中设置关联应该能够解决这个问题。Mongoid是否有重大变化,或者有什么不同之处?在保存之前,我确实弄乱了params散列(使用
trip_params.to_h
),因为我需要将字符串转换为数组,但即使在更改散列之前,我在散列中也看不到任何用户指示。

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

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

在创建旅行时,您不需要设置用户。但是如果您直接像

Trip.new(attributes)
trip.save!
然后,必须在创建行程时指定用户


如果为该对象指定的所有关联都已满或未满,则无活动记录将负责。它不会为我们设置关联

谢谢。后来我意识到我必须做一些事情来识别用户,模型关联只是为了在数据库中设置适当的外键字段。我还查看了几年前的Rails 1.1项目,实际上,我必须在创建时设置用户id。不过,我不熟悉create_uu语法,所以我很高兴学到了一些新东西!很高兴能帮上忙,谢谢。。!!
Trip.new(attributes)
trip.save!