Ruby on rails Rails 3.2安全性
在我的rails应用程序中,我有一个用户模型,其中有一个属性:pointsRuby 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用户
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
。