创建新记录时如何传递current_user?

How to pass current_user when creating new record?

我需要在创建 entity 时为 user_id 传递 current_user。它的工作方式与我不同。

def create
    @entity = Entity.new(entity_params, :user_id = current_user)
    ...
end

在架构中,我将 :user_id 作为 Entity table 的整数。我在 models/entity.rb

中也有 belongs_to :user 协会

new 接受参数散列,因此它应该适用于:

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

另一种方法是

@entity = Entity.new(entity_params).tap do |entity|
  entity.user = current_user
end

更好的方法:

#app/controllers/entities_controller.rb
class EntitiesController < ApplicationController
   def create
     @entity = current_user.entities.new entity_params
     @entity.save
   end
end

您也可以试试:

def create
  @entity = current_user.entities.create(entity_params)
end