同事!我有文檔模型。文檔應該由其中一個解析器處理(在我的項目中它們被稱爲「導入器」並存儲在'lib/importers'文件夾中)。問題是關於在模型層中實現實體Importer的最佳方式是什麼? (例如,關聯文件與進口商)。存儲模型內的.rb文件列表
- 第一個想法是創建進口商表,但後來我將有2個獨立的地方進口商名稱將被保存(數據庫和文件系統)。壞的情況:
案例1:進口商:我已經交鋒了新的進口商,卻忘了將它添加到進口表=我不能文檔與此impoter
案例2關聯更名和我們忘了將其重命名內部數據庫=錯誤
我決定限定
def Document.importers @importers ||= Dir.entries("#{Rails.root}/lib/importers/") .select { |name| !File.directory?(name) && name != 'base_importer.rb'} .map { |name| name.gsub(/\.rb$/, '') } end
用於f.association inout並將導入器字符串屬性添加到文檔模型。所以我可以通過以下方式獲得進口商類 - 「importer.classify.constantize」。它的工作原理,但它看起來令人毛骨悚然
你能爲這種情況提供更好的解決方案嗎?我會欣賞聽到任何想法;)
感謝您的迴應Max!我不認爲耙子任務是最好的解決方案,因爲我確信我需要使用某種自動方式。也許,你的意思是某種自動化,每次導入程序發生變化就會掛起rake任務,但是當特定目錄中的文件發生更改時,我不知道如何掛接任何類型的腳本。我會在這裏發佈我的本地ruby聊天解決方案。如果您發現任何微弱的時刻,請隨時批評它 – AntonTkachov