Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3.2安全性_Ruby On Rails_Security_Ruby On Rails 3.2_Rails Models - Fatal编程技术网

Ruby on rails Rails 3.2安全性

Ruby on rails Rails 3.2安全性,ruby-on-rails,security,ruby-on-rails-3.2,rails-models,Ruby On Rails,Security,Ruby On Rails 3.2,Rails Models,在我的rails应用程序中,我有一个用户模型,其中有一个属性:points class User < ActiveRecord::Base attr_accessible :points has_many :answers end class用户

在我的rails应用程序中,我有一个用户模型,其中有一个属性:points

class User < ActiveRecord::Base
    attr_accessible :points
    has_many :answers
end
class用户
是否有办法使属性仅从特定控制器操作更新

class AnswersController < ApplicationController
   ....
   def create
      @user = current_user
      @answer = @user.answers.build(params[:answer])
      if @answer.save
        @user.points += 10  # <-- I want to make points updatable only from this action
        @user.save
      else
        ...
      end
     ... 
   end
类应答器控制器@user.points+=10#您不需要
attr\u accessible
如果您像当前一样直接使用setter如果您的目标是防止批量分配,则
attr\u accessible
应该已经这样做了;它不会锁定您使用的操作,但它会防止分数发生更改,除非您在控制器操作中直接分配分数。这是不正确的,提示:如果可以访问
分数
,用户可以通过批量分配漏洞在初始创建或更新时为其点分配任何值。@Veraticus您最好重新阅读此处显示的代码+我编写的内容。我也没有说你错了,我的评论只是想从不同的角度来看待这个问题。显然,在本例中,setter将使用或不使用
attr\u accessible
@apreading Guh。。。出于某种原因,我读的是
attr\u protected
,而不是
attr\u accessible
。你说得对,它应该受到保护,他不应该使用
attr\u accessible