2013-01-02 29 views
0

我有一個用戶模型和一個問題模型。每個用戶擁有一個問題,每個問題都屬於一個用戶。 Questions模型有3列 - QuestionOne,QuestionTwo和QuestionThree - 每個都設置爲字符串「TBD」的默認值。我可以設置一個默認值而不使用新建和創建操作,並使用編輯和更新操作直接對其進行編輯?

當用戶創建一個帳戶並登錄時,我想在他的個人資料上顯示問題和答案=「TBD」,然後使用Best in place,我希望他能夠使用編輯和更新來編輯他的回覆動作。但我不能使用user.question.questionone來檢索這些問題,因爲他們坐到零,因爲這裏沒有任何創建或新的操作。我如何去做這件事?

回答

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 
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 

我相信當創建新的用戶會回答你的問題

1

,它還沒有相關的問題,所以你需要以某種方式建立它。常用的方法是使用ActiveRecord的回調before_createafter_create,像

# user.rb 
class User << ActiveRecord::Base 
    has_one  :question 
    after_create :create_question 
end 
相關問題