【问题标题】:How to pass current_user when creating new record?创建新记录时如何传递 current_user?
【发布时间】:2015-12-10 13:13:15
【问题描述】:

在创建entity 时,我需要将current_user 传递给user_id。它不像我那样工作。

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

在 Schema 中,我将 :user_id 作为 Entity 表的整数。我在models/entity.rb 中也有belongs_to :user 关联

【问题讨论】:

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


    【解决方案1】:

    new 接受参数哈希,因此它应该与:

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

    另一种方法是

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

    【讨论】:

    • 当我通过复杂形式创建新实体时,如何确保user_id 也传递给实体下的所有关联。实体有很多关联。
    【解决方案2】:

    更好的方法:

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

    【讨论】:

      【解决方案3】:

      你也可以试试:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多