我有一个名为products
的模型,它具有一个id
,user_id
和product_name
。
我有一个简单的form_for
可以传递给product_controller
参数。在同一个控制器中,我有权访问product_name
,以便创建新的current_user
。
问题是Product
始终必须是当前登录的用户,因此我不允许用户在我的user_id
中将此参数发送给我,因此我无法{{1} }。
我现在正在做的是使用form_for
参数创建一个新的哈希,并合并来自permit
的参数。
user_id
form
是否有更方便的方法或Rails的方法?
答案 0 :(得分:1)
解决方案#1
产品具有user_id
,表示product belongs_to :user
和user 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中阅读有关此文档的更多信息,以了解更多信息!