2016-08-10 38 views
1

我正在研究驗證Excel文件並將其保存到數據庫的引擎。但我的引擎沒有提供任何遷移。表格保存數據將由應用程序提供。如何在我的導引引擎中訪問模型的表名

現在我的問題是,如何在需要保存數據的引擎模型中訪問表名稱?

例如,我有一個模型upload.rb和應用程序提供了表admins我想保存數據。

我檢查了this question並設置了self.table_name = 'admins',但每次都無法設置表名。

我對軌道非常陌生,我第一次構建引擎。

這是發展過程中對我的引擎模型

module MyEngine 
    class Upload < ActiveRecord::Base 
    self.table_name = 'admins' 

    def validate(file) 
     spreadsheet = open_excel(file) 
     header = spreadsheet.row(1) 
     2.upto(spreadsheet.last_row) do 
     row = Hash[[header, spreadsheet.row(i)].transpose] 
     upload = Upload.new(row) 
     upload.save! 
     end 
    end 

    private 

    def open_excel(file) 
     case File.extname(file) 
     when ".xls", ".xlsx" then Roo::Spreadsheet.open file 
     else raise "File format not supported" 
     end 
    end 
    end 
end 

下面的代碼,我可以設置self.table_name = 'admins'但在生產中它很難改變表的名字每次。 任何幫助將不勝感激。

+0

你想直接訪問數據庫,是嗎?爲什麼你不只是實例化一個新的管理實例,然後保存它?表名不應該在這裏相關。 –

+0

只有當我的型號名稱是'admin'時,它纔會起作用。但型號名稱可以是任何東西。無論如何,截至目前的要求是由客戶更改,所以它現在不需要bt謝謝答覆。 – Sinscary

回答

1

試試下面這個:

self.class.table_name 
+0

naah ...不工作。 – Sinscary

+0

問題是'table_name'未知。例如'admins'。它可能是'users','employees',所以有沒有辦法在rails引擎中設置表名。 – Sinscary

+0

如果您試圖直接從模型名稱獲取表名,然後嘗試User.table_name –