Rails-Mongoid-Devise:创建后,错误消息“用户不能为空”

时间:2018-09-23 03:42:01

标签: ruby-on-rails mongoid

简单来说,我在Rails 5.2应用程序中使用Mongoid和Devise。在模型文件中,有一个用户has_many :trips和一个旅行belongs_to :user。提交表单以创建新的行程时,保存失败,并显示错误“用户不能为空”。我可以通过在保存操作之前设置@trip.user = current_user来解决问题,并且在数据库和后续查询中都看起来不错,但是我不记得必须这样做。自从我对Rails进行任何真正的工作已经有一段时间了(从1.1开始,确实如此-是的,很长一段时间),但是我不记得必须使用ActiveRecord模型来做到这一点。我当时认为在模型中设置关联应该可以解决这一问题。发生了重大变化,还是Mongoid有所不同?保存之前,我确实弄乱了params哈希(使用trip_params.to_h),因为我需要将字符串转换为数组,但是即使在更改哈希之前,也看不到哈希中有任何用户的迹象。

1 个答案:

答案 0 :(得分:1)

如果要在用户对象之类的实例上创建行程

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

然后

@user.create_trip(attributes)

那么您无需在创建行程时设置用户。但是,如果您直接像在创建行程一样

Trip.new(attributes)
trip.save!

然后,您必须在创建旅程时指定用户

为该对象指定的所有关联都已满或没有为我们设置关联

相关问题