ruby-on-rails - 如何在 Rails 控制器的表单参数中添加 user_id
问题描述
我有这个模型,叫做,products
它有一个id
和。我有一个简单的传递给我的参数。在同一个控制器中,我可以访问,我必须通过它才能创建一个新的. 问题是始终必须是当前用户登录,所以我不能允许用户在 my 中向我发送这个参数,因此我也不能这样做。我现在正在做的是使用参数创建一个新的哈希,并合并来自.user_id
product_name
form_for
product_controller
product_name
current_user
Product
user_id
form_for
permit
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中阅读有关它的更多信息,文档推荐这种方式!
推荐阅读
- reactjs - 未捕获的 TypeError:init 不是 mountLazyComponent 的函数
- python - 将 numpy 数组切片到窗口中
- microsoft-graph-api - Teams 读取和写入聊天消息的权限
- javascript - 如何为多个文本元素制作“阅读更多”按钮?
- django - 视图找不到对象
- git - 详细的 git checkout
- python-3.x - 用于管理依赖关系的 Python 数据结构
- ansible - 在 hosts 文件中定位 Ansible 嵌套子组
- r - 用重复名称加长数据框
- swift - 如果 GeoFire 在您所在地区找到人,请设置 Pin 图