2009-11-12 63 views
1

我目前正在構建一個基於保險的rails應用程序。有一個管理員部分,員工可以控制系統表,主要是下拉列表中顯示的內容,儘管有些內容與他們自己的關聯更加複雜。這個應用程序的主要模式是政策,這需要保持/鏈接到許多其他表格中的信息,例如,索賠人,被告人,被保險人的程度,用戶等等。每個人可能都有自己的關聯,例如鏈接到一個人,然後鏈接到地址等。Rails:如何將數據鎖定到源自許多系統表的記錄中?

該政策鏈接到的一個更復雜的表是包含財務信息以確定保費,付款等的總體覆蓋水平。

當創建策略時,我需要拍攝所有數據的快照。如果稍後管理員用戶修改策略,則需要進行版本控制,即使是關聯的數據。

我想知道如果有人有任何這個問題的一般解決方案。目前,我正在思考孤立記錄,單表繼承,保留系統錶鏈接,但使數據不可編輯,將數據複製到策略表中的字段(使其成爲編輯時的文本框,選擇框創建)或創建兩個表格,一個用於實況,一個用於模板。

到目前爲止,我能想到的最好的方法是根據應用需求收集上述不同的方法。這在應用程序中必定是一個普遍問題!你有什麼更好的想法/建議如何解決這類問題?

+0

這個問題似乎與商業系統中的訂單有關。他們保留了歷史上產品克隆的行項目列表。這些可能有關於當前產品記錄的關鍵記錄,但它們通常將必要的數據全部克隆到他們自己的表格中。 我不確定這是否有幫助。 – 2010-10-14 16:34:18

回答

1

對於模型版本,vestal_versions(github.com/laserlemon/vestal_versions)插件可能會有幫助。

+0

鏈接被打破。 http://github.com/laserlemon/vestal_versions/是它應該的。發現一個railscast:http://railscasts.com/episodes/177-model-versioning 我不能+1這個答案足夠。我沒有使用vestal_versions,但它聲稱做正確的事情,我已經看到試圖推出自己的損害。 DRY版本控制系統正是您想要的。這不是一件簡單的事情,你可以在一個項目中完成自己的工作。 – cgr 2009-11-13 07:38:35

+0

我真的很喜歡vestal_versions的外觀,我還沒有看太多,但我不認爲它處理協會?儘管如此,我仍然很想錯。 – tsdbrown 2009-11-13 09:26:23

1

如果不清楚應用程序的需求,很難確定最佳解決方案。

但是,根據我所讀到的內容,立即想到的解決方案就是您描述的「孤兒記錄」,但我不明白他們爲什麼需要孤兒。

您可以創建一個模型是這樣的:

class PolicyHistory< ActiveRecord::Base 
    belongs_to :policy 
end 

class Policy < ActiveRecord::Base 
has_many :policy_histories 
end 

該政策的歷史可以包含你的所有的政策細節的快照和相關數據在某一時刻,甚至誰進行了改變。

您可以拼合關聯並將數據存儲在一堆列中。但是,當更改任何涉及的表時,這可能會導致問題,因爲您還必須更新歷史記錄表。

解決方案可能是將整個快照序列化爲散列。策略歷史記錄表將能夠處理對涉及表的任何更改。

我希望這對你有一些幫助!

相關問題