Ruby on Rails:构建方法的反义词是什么?或者,我可以在保存之前从内存中销毁一个对象吗?

Reb*_*ele 5 ruby-on-rails nested-forms

在Rails 3中,如果我习惯于build()构建一个对象,有没有办法在对象被保存之前销毁它?

我需要这个的原因是因为我使用嵌套的模型形式,有3代对象:Survey,有很多问题,而问题有很多答案.

在控制器中,我使用构建来预先填充问题和答案.

奇怪的是,如果Survey模型无效,我会使用错误消息重新呈现页面,并且预先构建的问题出现在表单中,但不是答案!

(顺便说一下,如果这很重要,我会使用简单表格.)

无论如何,在我将这些问题与答案一起重建之前,我只是销毁了所有问题,但是如果问题尚未保存到数据库中,你如何销毁这些问题呢?

在我的控制器中:

4.times do
  question = @survey.questions.build
  @answers.each { |answer| question.answers.build(:label => option.label, :input_type => option.input_type, :available_options => option.available_options) }
end
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢!

Rhy*_*den 1

我目前没有可用的关系,但为什么不尝试将它们设置为 nil 或空数组呢?像这样:

@survey.questions = []
Run Code Online (Sandbox Code Playgroud)

或者

@survey.questions = nil
Run Code Online (Sandbox Code Playgroud)