2014-09-20 2 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 채무가 있습니까?

그리고이 경우 나는 여전히 이러한 흐름을 잃어 버리기 때문에 이러한 연관성을 모델링하는 데 도움이 될 것입니다.

답변

0

단일 청구에 대해 단일 채권자와 복수 채무자가 있다고 가정하면 채권자 -> 청구 (청구에 대해 belongs_to로 수행)와 일대일 관계가 필요하지만 많은 부채 관계 -> 사용자.

일반적으로 many-to-many를 has_many : through로 구현하는 것이 좋습니다. 그러면 논리를 추가 할 수 있습니다. 돈이 관련되어있을 때 아마 두 배로 중요합니다!

나는 의존성을 다시 생각해 보겠다. 대신에 소프트 삭제를 사용하거나 이전 트랜잭션을 잃게됩니다.