我有一個擁有許多Book模型的活動網站。我最近添加了一個屬於每本書的設置模型。必要時創建Rails模型的子項
現在,當我編寫使用book.settings方法的代碼時,如何避免檢查'book.settings.nil?'或執行'book.settings || book.create_settings'在每個電話中?設置模型有一些我可以使用的默認設置。
我有一個擁有許多Book模型的活動網站。我最近添加了一個屬於每本書的設置模型。必要時創建Rails模型的子項
現在,當我編寫使用book.settings方法的代碼時,如何避免檢查'book.settings.nil?'或執行'book.settings || book.create_settings'在每個電話中?設置模型有一些我可以使用的默認設置。
更新:早期的答案建議使用after commit hook將默認設置添加到書籍。根據評論,這不是問題。爲了避免讀者混淆,我刪除了較早的答案。
您可以使用rake任務,該任務將在生產服務器上運行一次,以修復沒有默認設置的書籍。
你爲什麼不放在一個自定義的方法,這些條件,並調用它,而不是調用settings
,就像這樣:
def default_settings
self.settings || self.create_settings
end
然後調用它像這樣:
@book.default_settings
您也可以在default_settings
的內部檢查nil?
。
這不是問題,因爲我已經有一個創建掛鉤來創建設置對象。這個問題針對已經存在的沒有設置對象的書籍。 – you786
添加rake任務,該任務將更新所有沒有設置的書籍,並在您下次將代碼推送到生產服務器時運行它。 – HariKrishnan
謝謝,我結束了使用種子文件來做到這一點。如果你想發佈這個答案,我可以接受它。 – you786