如何让current_user中的每条记录在user_id上名副其实? Rails

How to pass current_user in every record on user_id veritable? Rails

我想将 current_user 中的 user_id 传递给嵌套表单中的每个关联。

def create
    @entity = Entity.new(entity_params.merge(user: current_user)) 

    # entity has_many :boxes and in form i'm making them more than one
    @entity.boxes.user_id = current_user.id if current_user 

    # entity has_many :orders and in form i'm making them more than one
    @entity.orders.user_id = current_user.id if current_user
end 

我遇到了这个错误

undefined method `user_id='

我需要一种方法如何给每个 boxorder user_id = current_user。数据库中的所有表都有 user_id 列,每个模型都有 belongs_to :user.

@entity.boxes@entity.orders 属于 <ActiveRecord::Associations::CollectionProxy []> 类型,即您必须迭代它们才能获得单独的项目 boxorder其中有关联的 user:

@entity.boxes.each do |box|
  box.user_id = current_user.id if current_user.present?
end

如果您想将更改保存到数据库中,您还可以使用:

box.update!(user: current_user) if current_user.present?

P.S。我想 User has_many :boxes:orders