如何使用has_one关联更新相应的记录?

时间:2017-03-08 22:01:17

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

我有一个用户模型 has_one 自行车和用户 accepted_nested_attributes_for 一辆自行车。

class User < ApplicationRecord
  has_one :bike

  accepts_nested_attributes_for :bike
end

class Bike < ApplicationRecord
  belongs_to :profile
end

在我的控制器上,我传递了自行车的参数:

params.require(:purchase).permit(bike_attributes: [:id, :type, :brand])

之后我用新信息

更新current_user
def update
  current_user.update(purchase_params)
end

我的问题是,对于当前用户的每次新更改,都会创建一个新的自行车记录。例如,如果我为当前用户更新10次自行车的信息,那么将创建10个自行车记录,只有最后一个 Bike.last 将保持正确 user_id

如何防止数据库出现并真正只更新一条相应的记录?

谢谢。

1 个答案:

答案 0 :(得分:1)

检查自行车是否在id中的params属性中发送。如果自行车当前不存在,您应该为自行车添加一个隐藏的id字段。