2014-05-22 33 views
0

請原諒,如果這已被問及答案,我會去那裏讀取信息。我正在編寫一個系統,該系統可以在許多其他方面撕毀用戶名/地址。該名稱和地址以每週文件提供,因此我們必須確定該信息何時發生變化,然後相應地更新我們的系統以反映新信息。我必須始終保留記錄什麼是什麼,所以如果你看到多個條目,這是目前的設計。更好的方式來比較Activerecord導入/更新

讓我奠定了什麼車型我們有這個例子中(簡體例如字段):

class Member < ActiveRecord::Base 
    has_many :addresses 
    has_many :names 
end 

class Name < ActiveRecord::Base 
    belongs_to :member 
    # has fields of firstname and lastname for this example 
end 

class Address < ActiveRecord::Base 
    belongs_to :member 
    # has fields of lineone, city, state and zipcode for this example 
end 

所以我想知道什麼,如果任何資源都可以在這些記錄的信息進行比較的東西上一個文件,然後如果需要更新。很明顯,所有模型中都有字段必須被忽略,並且不在文件中。

建議您創建未存儲的記錄,然後比較兩個對象的一些方法?我是否需要進行字符串比較,然後根據需要更新/添加記錄?

我會試着澄清一下,如果我問這是一個糟糕的方式,顯然不是很好地包裹我的頭。在此先感謝您的幫助和理解,您都可以提供!

馬克

回答

0

像你需要創建一個程序(可能是一個rake任務將由cron作業調用)通過你的文件來分析和比較,並據此更新數據庫,這聽起來我。

我假設您接收的文件採用某種格式,如XML或CSV,以便您可以提取關聯列的記錄。有些工具可以處理特定的文件格式。查看如何在解析CSV文件的示例:

Using CSV Class to parse a .csv file in Ruby

我假設用戶名不會改變,但是你想,如果地址變化來檢測。您可以迭代文件並獲取每行的用戶名和地址,並在數據庫中查找用戶(通過用戶名)並檢查地址是相同還是不同。如果地址不同,請更新該記錄。

相關問題