首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在rails中添加current_user to user_id to form_for?

如何在rails中添加current_user to user_id to form_for?
EN

Stack Overflow用户
提问于 2012-10-06 20:11:30
回答 4查看 7.7K关注 0票数 13

我有一个创建材料的表单(标题,描述和内容-都是基本的)。表单可以很好地保存这些详细信息,但不会保存user_id,它应该是current_user的user_id。我该怎么做呢?这肯定很简单,但到目前为止还没有任何工作。

代码语言:javascript
复制
def create 
   @material = Material.new(params[:material])
   if @material.save
     flash[:success] = "Content Successfully Created"
     redirect_to @material
   else
     render 'new'
   end
end
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-06 20:19:37

代码语言:javascript
复制
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
票数 13
EN

Stack Overflow用户

发布于 2012-10-06 20:19:27

有几种不同的方法可以做到这一点,这取决于您如何设置您的应用程序。如果用户和材质之间存在关系(用户有许多材质),则可以在控制器中使用该关系:

代码语言:javascript
复制
def create
  @material = current_user.materials.new(params[:material])
  # ...
end

如果您没有这种关系,我仍然建议您在控制器中设置它,而不是在表单中设置隐藏字段。这将更加安全,因为它不会让人篡改用户id值:

代码语言:javascript
复制
def create
  @material = Material.new(params[:material].merge(user_id: current_user))
  # ...
end
票数 5
EN

Stack Overflow用户

发布于 2012-10-06 20:19:03

假设您正在将登录用户的对象保存在current_user中,则可以使用以下命令

代码语言:javascript
复制
   @material = Material.new(params[:material])
   @material.user_id = current_user.id
   if @material.save
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12759683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档