2013-07-28 79 views
0

我有一個用戶模型的模型(這我想重新命名爲句法原因UserAccount的)創建一個條件

class User < ActiveRecord::Base 
    has_one :tutor, dependent: :destroy 
end 

然後,我有一個輔導模式

class Tutor < ActiveRecord::Base 
    belongs_to :user 
end 

不過,我只如果將is_tutor布爾值設置爲true,則要創建輔導員信息。 is_tutor是用戶表中的一列。

該邏輯應該添加到用戶has_one邏輯中的驗證或條件中嗎?這將如何完成?

謝謝!

+0

你想在什麼時候創建導師?在創建user_account之後? – rmagnum2002

+0

創建用戶帳戶。然後,用戶可以通過在編輯帳戶頁面中選擇一個check_box來決定他們是否想成爲學生或導師(甚至是兩者)。 – DaniG2k

+0

因此,他將選擇此選項並更新其帳戶,現在,當用戶再次編輯他的sccount並取消選中該選項時會發生什麼? – rmagnum2002

回答

1

我的想法,如果這是可以做到的。

型號/ user.rb

after_update :check_tutor 

def check_tutor 
    if self.is_tutor? 
    Tutor.find_or_create_by_user_id(self.id) 
    else 
    self.tutor.destroy 
    end 
end 

after_update回調將檢查每次一個用戶,如果用戶ID或沒有導師更新。

+0

我認爲這正是我正在尋找的。只有一件事是不明確的:self.tutor.find_or_create_by_user_id ...這是添加到用戶表嗎?或者它是否添加到導師表?如果後者,那麼爲什麼它需要自我? – DaniG2k

+0

我修改了答案 – rmagnum2002