0

在我的应用程序中,我有一个 Question 模型和一个 QuestionResult 模型。它们通过 Question has_one QuestionResult 相关联,我试图让 Rails 在创建 Question 条目时自动创建其相关的 QuestionResult 条目。

这是我在问题模型中尝试过的:

before_create :create_result_record_and_populate_difficulty

has_one :question_result, :dependent => :destroy

def create_result_record_and_populate_difficulty
  self.build_question_result(:current_difficulty => initial_difficulty)
end

初始难度只是 Question 模型的一个属性,我用它来设置相关 QuestionResult 模型中的当前难度。我知道正在调用该方法,因为我在该方法中放置了一个“raise”语句,并且当我运行“rake db:seed”添加一些问题时它会触发异常。

但是,即使 db 播种成功,也不会在 db 中找到 QuestionResult 条目。

这应该做的方式有什么问题吗?请帮助启发我:)

4

1 回答 1

0

您正在使用一种build构造新对象而不将其保存到数据库的方法。尝试:

def create_result_record_and_populate_difficulty
  self.create_question_result(:current_difficulty => initial_difficulty)
end

create 方法实际上将新记录插入到数据库中。对于 has_one 关系,ActiveRecord 提供了一个 create 和一个 build 方法。请参阅http://guides.rubyonrails.org/association_basics.html#has_one-association-reference

于 2013-03-10T11:08:00.423 回答