0

ユーザー モデルと質問モデルがあります。各ユーザーには 1 つの質問があり、各質問はユーザーに属します。Questions モデルには 3 つの列 (QuestionOne、QuestionTwo、および QuestionThree) があり、それぞれに文字列 "TBD" の既定値が設定されています。

ユーザーがアカウントを作成してサインインすると、プロファイルに質問と回答 = 「TBD」を表示し、ベストインプレースを使用して、編集および更新アクションを使用して回答を編集できるようにします。user.question.questiononeしかし、ここには作成または新しいアクションがないため、質問はゼロに座っているため、使用して質問を取得できません。どうすればいいですか?

4

3 に答える 3

2
# user.rb
class User << ActiveRecord::Base
  has_one      :question
  after_create :create_question

  def create_question
    question = self.build_question
    question.question_one = question.question_two = question.question_three = "TBD"
    question.save
  end
end
于 2013-01-02T08:10:12.023 に答える
1

新しいユーザーが作成されたとき、まだ質問が関連付けられていないため、何らかの方法で作成する必要があります。一般的な方法は、ActiveRecord コールバックbefore_createまたはafter_createのようなものを使用することです

# user.rb
class User << ActiveRecord::Base
  has_one      :question
  after_create :create_question
end
于 2013-01-02T07:49:21.480 に答える
0

これで、質問が作成されるたびにデフォルトの質問を追加する移行を作成できます。

class ChangeDefaultQuestions < ActiveRecord::Migration
  def self.up
    change_column :questions, :question_one,   :string, :default => 'What is your name?'
    change_column :questions, :question_two,   :string, :default => 'How old are you?'
    change_column :questions, :question_three, :string, :default => 'Where do you live'

    # to add default questions to previously created questions
    Questions.update_all({ :question_one => 'your qestion', :question_two => 'your question', :question_three => 'your question' })
  end

  def self.down
    change_column :movies, :rating, :string, :default => nil
    Questions.update_all({ :question_one => '', :question_two => '', :question_three => '' })
  end
end

私はそれがあなたの質問に答えると確信しています

于 2013-01-02T07:43:52.433 に答える