具有嵌套属性的rails形式的循环依赖的最佳解决方案

时间:2015-09-11 14:48:48

标签: ruby-on-rails nested-forms nested-attributes circular-dependency

我有以下模型结构:

class Test < ActiveRecord::Base
  has_many :questions
end

class Question < ActiveRecord::Base
  belongs_to :test
  belongs_to :answer, class_name: 'Choice'
  has_many :choices, dependent: :destroy
end

class Choice < ActiveRecord::Base
  belongs_to :question
  has_one :question_answered, dependent: :nullify, class_name: 'Question', foreign_key: 'answer_id'
end

现在我想创建一个单独的表单,用户可以在其中创建/保存测试参数并编辑所有问题及其选择,并选择哪一个是正确的答案。

当用户创建新问题时,问题就会到来。所有选项都没有id,因此,我不知道如何定义哪个是正确的答案而不必在我的控制器上编写额外的代码(仅使用accepts_nested_attributes_for)。

我所做的是:在保存Test的嵌套属性之前(但之前保存测试),我从params中获取所有没有id的问题和选项并保存它们。之后,我更新了所有问题的answer_id参数。

此解决方案现在正在运行,但我不认为这是最优雅的解决方案。了解Rails及其非常棒,我知道有更好的方法可以做到这一点。你们有什么建议?

0 个答案:

没有答案