我不熟悉表单的工作方式。
示例场景
假设用户可以创建调查,但创建后无法编辑它们,只能向它们添加问题。这是通过使用调查上的编辑操作来完成的。
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 %>
现在,即使我希望调查的字段在创建后无法使用,这是否会使调查的值易受攻击或容易被黑客入侵?
一般来说呢?模型值不在表单上时是否仍可编辑?这背后的逻辑是什么,我怎么知道他们不能?
谢谢,刚入门的新手。