2014-09-20 50 views
0

我是一名初学者Rails开发人员,现在正在构建一个示例项目,以便在某些工作适用时炫耀。我想,这个应用程序非常简单,但是我对于选择什么关联以及为什么会产生一些怀疑。关于选择什么样的关联的疑问

基本上用户可以创建帐单(作为其债权人),并且帐单可以有许多其他用户(作为他们的债务人),因此您可以跟踪您与其他人分享的帐单,例如租金,市场,食品订单等,并控制每个人要付给你的东西。

现在我有以下型号:

class User < ActiveRecord::Base 
    has_many :billings, foreign_key: "creditor_id", dependent: :destroy 
    has_many :debts, foreign_key: "debtor_id", dependent: :destroy 
end 

class Billing < ActiveRecord::Base 
    belongs_to :creditor, class_name: "User" 
    has_many :debts, dependent: :destroy 
end 

class Debt < ActiveRecord::Base 
    belongs_to :billing 
    belongs_to :user 
end 

这将是更好的方法?或者类似: 用户has_many通过债务清算 清算has_many债务?

在这种情况下,将不胜感激一些帮助建模这些关联,因为我仍然有点流失。

回答

0

假设单个债权人和多个债务人为单个账单,您将需要一对一的关系为债权人 - >开单(belongs_to在开单上,就像您所做的那样),但需要多对多的债务关系 - >用户。

通常,将多对多实现为has_many:through会更好,因此您可以添加逻辑。涉及金钱时,这可能是非常重要的!

我会重新考虑依赖:尽管如此。您可能想要使用软删除,否则您将失去过去的事务。