0

私のアプリケーションには Question モデルと QuestionResult モデルがあります。それらは Question has_one QuestionResult を介して関連付けられており、質問エントリを作成するときに、関連する QuestionResult エントリを Rails に自動作成させようとしています。

質問モデルで試したことは次のとおりです。

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

初期難易度は、関連付けられた QuestionResult モデルで現在の難易度を設定するために使用している Question モデルの単なる属性です。メソッド内に「raise」ステートメントを配置したため、メソッドが呼び出されていることがわかります。「rake db:seed」を実行していくつかの質問を追加すると、例外がトリガーされます。

ただし、データベースのシードが成功した場合でも、データベースに 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 に答える