我的文章控制器中的if语句出现意外结果。我的目的是允许文章作者或管理员用户(它是users表中的布尔列)更新文章。我想检查当前用户是否是原始作者,如果是,请更新作者姓名,以防该人在发布文章后更改了用户名。
问题是当管理员更新文章时,它不仅将作者名称更改为admin,还将user_id设置为admin!我不明白为什么。 admin.id与article.user_id不匹配,为什么会发生这种情况?
这是文章控制器中的一点:
def update
@article = Article.find(params[:id])
if @article.user_id == current_user.id || current_user.admin?
#update author in case of user name change
if @article.user_id = current_user.id
@article.author = current_user.name
end
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
elsif
redirect_to articles_path, :notice => "You do not have permission to edit this resource."
end
end
答案 0 :(得分:0)
if @article.user_id = current_user.id
这是一项任务(并且始终为真)
需要if @article.user_id == current_user.id