在create中的同一模型上创建has_many和belongs_to关系

时间:2012-02-02 01:20:14

标签: ruby-on-rails

我正在创建一个测验应用程序。这是我的模特。

答案

class Answer < ActiveRecord::Base                                                                                       
belongs_to :question
end

问题

class Question < ActiveRecord::Base
has_many :answers
belongs_to :correct_answer, :class_name=>"Answer" 
accepts_nested_attributes_for :answers,  :reject_if => lambda { |a| a[:content].blank?    }, :allow_destroy => true
end

我正在尝试使用railscast 196和197这样的嵌套属性表单。这样,在创建/编辑时可以有无限的添加和删除。

我可以用很好的答案创建问题。问题是创建correct_answer字段。由于尚未保存答案,因此无法在correct_answer_id表单中输入ID。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我没有看到correct_answer字段在Question类中的原因。为什么不在答案表中添加布尔列?然后你可以做一些类似于Question.answers.find(correct:true)的东西来获得一个包含问题所有正确答案的集合。那么你也可以提出多个正确答案的问题。

答案 1 :(得分:0)

从我的结尾开始。

我自己也这样做了 - 请参阅What mysql database tables and relationships would support a Q&A survey with conditional questions?

测验应用程序有很长的历史,开始非常简单,然后边缘情况和皱纹突然出现。这个设计从经验中解决了许多问题。

如果不出意外,一些带有(我的)答案的文字可以帮助你思考问题。