2011-08-17 86 views
2

嗨,我預先填充分貝這裏說 http://docs.rhomobile.com/faq#how-to-pre-populate-client-database ,但我有一個問題,當我做復位DB與默認代碼Rhomobile的預先填充DB和復位

def do_reset 
    Rhom::Rhom.database_full_reset 
    SyncEngine.dosync 
    @msg = "Database has been reset." 
    redirect :action => :index, :query => {:msg => @msg} 
    end 

然後我失去的數據。當我重置時,如何使預填充的數據庫等會被加載。 乾杯

我想出了這樣的解決方案

鑑於do_reset.erb

<% 
Antwort.delete_all() 
    file_name = File.join(Rho::RhoApplication::get_model_path('app','Settings'), 'antwort.txt') 
    file = File.new(file_name,"r") 
    aid=0 
    file.each_line("\n") do |row| 
    col = row.split("|") 
aid=aid+1 
    @antwort=Antwort.create(
     {"aid" => aid, "qid" => col[0],"antwort"=>col[1],"richtig"=>col[2]} 
    ) 

    qty=file.lineno 
    break if file.lineno > 3000 
    end 

    Questions.delete_all() 
file_name = File.join(Rho::RhoApplication::get_model_path('app','Settings'), 'questions.txt') 
    file = File.new(file_name) 

    file.each_line("\n") do |row| 
    col = row.split("|") 

    @question=Questions.create(
     {"id" => col[0], "question" => col[1],"answered"=>'0',"show"=>'1',"tutorial"=>col[4]} 
    ) 


    break if file.lineno > 1500 
    end 
file.close 
    @msg="OK" 
    %> 

但是,只有我現在的問題是在文本中的單引號又名「。然後它們會以應用程序的形式顯示在三角形中裏面像 一樣。該怎麼辦?

+0

我認爲,在這種情況下,您將需要使用插入直接填充數據庫。您可以創建一組SQL語句並運行它們中的每一個。在數據庫重置時創建預填充的數據庫。 –

+0

你的意思,而不是SyncEngine.dosync我應該寫一個代碼,將數據插入數據庫?任何想法什麼將是最好的方式? CSV? –

+0

是的,這是關閉的。但是,傑弗裏在他的回答中如何記住,你可以使用管道分隔的文本,我認爲這是一個更好的主意。 –

回答

1

您可以使用管道分隔文本文件對數據庫進行種子處理,如解釋here所述。

因此,在您使用Property Bag模型定義的實例中,您將獲得一個名爲object_values.txt的文件,並加載需要的任何源,屬性和值。

+0

我想出了這個解決方案,並試圖做到這一點,但我不知道爲什麼我得到一個關於最後一個「訂單」columnt不存在的錯誤消息,並且我已經制作了我自己的小更新腳本,如上所示。唯一的問題是單引號問題,也許你可以幫助解決它... –

+0

你能幫助我那奇怪的 標誌嗎? –