Rails Reverse Polymorphic Association

时间:2012-04-17 20:35:37

标签: ruby-on-rails polymorphic-associations

我正在为其中一所学校建立费用模块。为了使费用模块工作,我想定义费用模板(结构),它将有不同类型的费用(入场费,图书馆费,体育费等),各种折扣和任何适用的税收。费用,折扣和税收被定义为不同的模型,因为它们包含不同的属性。

以下是各种型号......

首先是费用模板

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的数据库表将有一个类型列来存储费用/折扣/税的类型和id记录。

想要问你几个关于我必须实施的方案的问题。

  1. 这种情况的方法(多态)是否有用?

  2. 如果上面的情况还可以,并且知道多态协会的工作方式是一种方式,但就我而言,我必须从费用细节中找到每种类型费用/折扣/税的细节,而不是相反。怎么做?

  3. 有没有更好的方法来解决这个问题。

  4. 提前致谢。

1 个答案:

答案 0 :(得分:1)

是的,这很好。

你有has_many的field_particular来查找不同类型的细节。您将能够针对细节的不同行为设置不同的课程。我认为这是一个非常好的问题设计。