我不熟悉表单的工作方式。
示例场景
假设用户可以创建调查,但创建后无法编辑它们,只能向它们添加问题。这是通过使用调查上的编辑操作来完成的。
class Survey < ActiveRecord::Base
has_many :questions
accepts_nested_attributes_for :questions
end
class Question < ActiveRecord::Base
belongs_to :survey
belongs_to :user
end
# QuestionsController
def edit
@survey = Survey.find(params[:id])
@survey.questions.build
end
def update
@survey = Survey.find(params[:id])
@survey.update_attributes(params[:survey])
redirect_to ...
end
那么表格应该是:
<%= form_for @survey do |f| %>
# No surveys fields on this form!
<% f.fields_for :questions do |builder| %>
<%= render "question_fields", :f => builder %>
<% end %>
<%= f.submit "Submit" %>
<% end %>
现在,即使我希望调查的字段在创建后无法使用,这是否会使调查的值易受攻击或容易被黑客入侵?
一般来说呢?模型值不在表单上时是否仍可编辑?这背后的逻辑是什么,我怎么知道他们不能?
谢谢,刚入门的新手。