如何在Rails控制器的表单参数中添加user_id

时间:2019-01-11 19:05:37

标签: ruby-on-rails

我有一个名为products的模型,它具有一个iduser_idproduct_name。 我有一个简单的form_for可以传递给product_controller参数。在同一个控制器中,我有权访问product_name,以便创建新的current_user。 问题是Product始终必须是当前登录的用户,因此我不允许用户在我的user_id中将此参数发送给我,因此我无法{{1} }。 我现在正在做的是使用form_for参数创建一个新的哈希,并合并来自permit的参数。

user_id

form

是否有更方便的方法或Rails的方法?

2 个答案:

答案 0 :(得分:1)

解决方案#1

产品具有user_id,表示product belongs_to :useruser has_many :products

因此它可以写为

current_user.products.new(product_name: params[:product_name])

解决方案2

显式设置current_user

@product = Product.new(product_name: params[:product_name])
@product.user_id = current_user.id
#@product.user = current_user
@product.save

答案 1 :(得分:0)

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

c:\ruby\bin\ruby C:\web\priority_tree\script\server -e test -p 3000

但是,要使以上代码正常工作,您必须正确构建关系,如下所示:

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

现在,您可以做到!

您可以在https://guides.rubyonrails.org/v3.2/association_basics.html中阅读有关此文档的更多信息,以了解更多信息!