Polymorphic或has_many:用于记录现金流量

时间:2012-08-29 08:27:02

标签: ruby-on-rails ruby ruby-on-rails-3 has-many-through polymorphic-associations

到目前为止,我花了一天时间试图模拟以下内容,我认为这应该很简单,我已经看了太多,并且可能有一个明显的解决方案盯着我看。

目标:Usersclients预订到events,可以收取费用,用户可以访问cashbox区域,以便为那些chargeable events付款(付款) ,other_charges(存入资金)但仅与客户有关)并记录与事件或客户无关的一般expenses(资金外出)。

到目前为止:使用正确关联创建的用户,客户端和事件模型。典型场景;用户将客户端预订到事件上,可以收取费用(布尔值)。

# == Associations so far

class User < ActiveRecord::Base
  has_many :clients
  has_many :events
end

class Client < ActiveRecord::Base
  has_one :user, through: :events
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :user
  belongs_to :client
end

问题:cashbox的关联应该是多态的还是has_many:通过?

他们用多态来理解它; events,other_charges&amp;费用可以是cashboxable。这方面的缺点是我理解我不能sum多态关联?

通过has_many,我很困惑如何联想到这一点,看起来很复杂。但我可能会遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

class User < ActiveRecord::Base
  has_many :clients
  has_many :events
end

class Client < ActiveRecord::Base
  belongs_to :user, through: :events
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :user
  belongs_to :client
end