【问题标题】:How to update corresponding record with has_one association?如何用 has_one 关联更新对应的记录?
【发布时间】:2017-03-08 22:01:17
【问题描述】:

我有一个用户模型 has_one 自行车和用户 accepts_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

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

如何防止数据库发生这种情况并真正只更新一条对应的记录?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 2023-03-19
      相关资源
      最近更新 更多