2012-04-17 62 views
4

我正在爲其中一所學校建立一個收費模塊。爲了使費用模塊起作用,我想要定義費用模板(結構),這些模板(結構)將具有不同類型的費用(入場費,圖書館費,體育費等),各種折扣和任何適用的稅收。費用,折扣和稅款被定義爲不同的模型,因爲它們包含不同的屬性。Rails Reverse Polymorphic Association

這裏有各種型號...

一費模板

class FeeTemplate < ActiveRecord::Base 
    has_many :fee_template_particulars 
end 

然後FeeParticulars ..

class FeeParticular < ActiveRecord::Base 
    belongs_to :fee_template 
    belongs_to :particulars, :polymorphic => true 
end 

現在費,折扣和稅收模型

class Fee < ActiveRecord::Base 
    has_many :fee_particulars, :as => particulars 
end 

class Discount < ActiveRecord::Base 
    has_many :fee_particulars, :as => particulars 
end 

class Tax < ActiveRecord::Base 
    has_many :fee_particulars, :as => particulars 
end 

基本上,FeeTemplateParticular的數據庫表將有一個類型列來存儲費用/折扣/稅和類型記錄的類型。

想問你們對我一定要實現的場景幾個問題..

  1. 是該方法(polymorohic)適合這種情況呢?

  2. 如果以上情況沒有問題,並且知道多態協會是一種方式,但在我的情況下,我將不得不從費用明細中找到每種類型費用/折扣/稅的詳細信息,而不是反過來。這將如何完成?

  3. 有沒有更好的方法來解決這個問題。

在此先感謝。

回答

1

是的,這很好。

您有has_many的field_particular查找不同類型的細節。你將能夠爲不同的細節行爲制定不同的課程。我認爲這對你的問題是一個很好的設計。