首页 > 解决方案 > 如何在 Rails 控制器的表单参数中添加 user_id

问题描述

我有这个模型,叫做,products它有一个id和。我有一个简单的传递给我的参数。在同一个控制器中,我可以访问,我必须通过它才能创建一个新的. 问题是始终必须是当前用户登录,所以我不能允许用户在 my 中向我发送这个参数,因此我也不能这样做。我现在正在做的是使用参数创建一个新的哈希,并合并来自.user_idproduct_nameform_forproduct_controllerproduct_namecurrent_userProductuser_idform_forpermituser_idform

products_controller.rb:

  def create
    product_user_id_param = { "user_id": current_user.id.to_s }
    @product = Product.new(product_user_id_param.merge(params[:product_name]))
    ...
  end

有没有更方便或 Rails 的方式来做到这一点?

标签: ruby-on-rails

解决方案


您可以使用 current_user 参考创建产品,我认为这是更方便的方式:

current_user.produtcs.create(name: params[:product_name])

但是,要使上述代码有效,您必须正确构建关系,如下所示:

class User < ActiveRecord::Base
   has_many :products
end

class Product < ActiveRecord::Base
   belogs_to :user
end

现在,你可以做到了!

您可以在https://guides.rubyonrails.org/v3.2/association_basics.html中阅读有关它的更多信息,文档推荐这种方式!


推荐阅读