2012-04-17 71 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查找不同类型的细节。你将能够为不同的细节行为制定不同的课程。我认为这对你的问题是一个很好的设计。