gpt4 book ai didi

ruby-on-rails - 如何在 Rails Controller 的表单参数中添加 user_id

转载 作者:行者123 更新时间:2023-12-02 00:24:44 25 4
gpt4 key购买 nike

我有一个名为 products 的模型,它有一个 iduser_idproduct_name。我有一个简单的 form_for 传递给我的 product_controller product_name 参数。在同一个 Controller 中,我可以访问 current_user,我必须传递它才能创建新的 Product。问题是 user_id 必须始终是当前登录的用户,所以我不能让用户在我的 form_for 中向我发送此参数,因此我可以也不要允许。我现在正在做的是使用 user_id 参数创建一个新的散列,并合并来自 form 的参数。

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 的方式来做到这一点?

最佳答案

您可以使用 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 中阅读更多相关信息,文档推荐这种方式!

关于ruby-on-rails - 如何在 Rails Controller 的表单参数中添加 user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54152585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com