Fin*_*jon 13 ruby-on-rails form-for
我有一个用于创建材料的表单(标题,描述和内容 - 所有基础).表单保存这些细节很好,但它不保存user_id,user_id应该是current_user的user_id.我该怎么做呢?这一定很容易但到目前为止还没有任何工作.
def create
@material = Material.new(params[:material])
if @material.save
flash[:success] = "Content Successfully Created"
redirect_to @material
else
render 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
Arp*_*nav 12
def create
@material = Material.new(params[:material])
@material.user_id = current_user.id if current_user
if @material.save
flash[:success] = "Content Successfully Created"
redirect_to @material
else
render 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
根据您的应用程序设置方式,有几种不同的方法可以做到这一点。如果用户和材料之间存在关系(用户有很多材料),您可以在控制器中使用它:
def create
@material = current_user.materials.new(params[:material])
# ...
end
Run Code Online (Sandbox Code Playgroud)
如果您没有这种关系,我仍然建议在控制器中设置它,而不是在表单中设置隐藏字段。这将更安全,因为它不会让某人篡改用户 ID 值:
def create
@material = Material.new(params[:material].merge(user_id: current_user))
# ...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |