出于安全原因,我决定采用不同的方法进行批量分配,并想知道这是否是在 Controller 内部执行此操作的安全方法?
QuestionsController
def new
@survey = Survey.find(params[:survey_id])
@question = Question.new
end
def create
@survey = Survey.find(params[:survey_id])
@question = @survey.questions.new
@question.title = params[:question][:title]
@question.description = params[:question][:description]
if @question.save
redirect_to new_survey_question_path
else
render :new
end
end
他们可以更改 survey_id
或 question
的任何其他列吗?除了使用 attr_accessible
之外,他们是更好的方法吗?
最佳答案
好的,你可以做类似的事情......
enabled_attributes = [:title, :description]
params[:question].delete_if {|k, v| !enabled_attributes.include?(k) }
@question = @survey.questions.new(params[:question])
这将从 params[:question] 散列中删除所有不在启用数组中的属性。
关于ruby-on-rails - 这是通过 Controller 进行质量分配的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250735/