0

我有一个用户模型和一个问题模型。每个用户都有_一个问题,每个问题都属于_一个用户。Questions 模型有 3 列 - QuestionOne、QuestionTwo 和 QuestionThree - 每一个都设置为字符串“TBD”的默认值。

当用户创建帐户并登录时,我想在他的个人资料上显示问题和回复 =“待定”,然后使用 Best in place 我希望他能够使用编辑和更新操作来编辑他的回复。但是我无法检索使用的问题,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_createafter_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 回答