登录 主页

将 CanCanCan 与 Rails 4+ 一起使用时,却报错说ActiveModel::ForbiddenAttributesError in CommentUsersController#create

2023-08-25 09:06PM

参考:https://stackoverflow.com/questions/17335329/activemodelforbiddenattributeserror-when-creating-new-user

我的rails版本为4.2.11.3

app/controllers/comment_users_controller.rb文件中 create action的内容为:

def create
    @comment_user = CommentUser.new
    @comment_user.username = params[:comment_user][:username]
    @comment_user.password = params[:comment_user][:password]
    @comment_user.save
    
    if @comment_user.username.blank? || @comment_user.password.blank?
       redirect_to :back, notice: '用户名和密码不能为空'
       return
    end
    
     session[:current_comment_user] = @comment_user
     redirect_to article_path(params[:article_id])
  end

在cancancan的app/models/ability.rb文件中增加了CommentUser的create之后,浏览器就报错说:

ActiveModel::ForbiddenAttributesError in CommentUsersController#create
ActiveModel::ForbiddenAttributesError

修改app/controllers/comment_users_controller.rb文件中的create action内容 (将所需的参数标记为必需)

def create
     @comment_user = CommentUser.new(comment_user_params)
     @comment_user.username = params[:comment_user][:username]
     @comment_user.password = params[:comment_user][:password]
     @comment_user.save

      …………

end

private
def comment_user_params
    params.require(:comment_user).permit(:username, :password)
 end

修改完create action中的内容,在刷新浏览器,就发现已经可以了

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论