2013-08-16 13 views
0

我有一個擁有許多Book模型的活動網站。我最近添加了一個屬於每本書的設置模型。必要時創建Rails模型的子項

現在,當我編寫使用book.settings方法的代碼時,如何避免檢查'book.settings.nil?'或執行'book.settings || book.create_settings'在每個電話中?設置模型有一些我可以使用的默認設置。

回答

1

更新:早期的答案建議使用after commit hook將默認設置添加到書籍。根據評論,這不是問題。爲了避免讀者混淆,我刪除了較早的答案。

您可以使用rake任務,該任務將在生產服務器上運行一次,以修復沒有默認設置的書籍。

+0

這不是問題,因爲我已經有一個創建掛鉤來創建設置對象。這個問題針對已經存在的沒有設置對象的書籍。 – you786

+1

添加rake任務,該任務將更新所有沒有設置的書籍,並在您下次將代碼推送到生產服務器時運行它。 – HariKrishnan

+0

謝謝,我結束了使用種子文件來做到這一點。如果你想發佈這個答案,我可以接受它。 – you786

0

你爲什麼不放在一個自定義的方法,這些條件,並調用它,而不是調用settings,就像這樣:

def default_settings 
    self.settings || self.create_settings 
end 

然後調用它像這樣:

@book.default_settings 

您也可以在default_settings的內部檢查nil?