0

財務状況を追跡するのに役立つアプリに取り組んでいます。私の投資口座 (例: 401k など) と、各口座に関連付けられた毎月の残高を追跡するモデルがあります。Investment_accounts モデルには多数の残高があり、残高は Investment_accounts に属しています。

アプリで借金、特に私の住宅ローンを追跡できるようにしたいと思います。しかし、これを最適にモデル化する方法を理解するのに苦労していますか? 私は、investment_accounts (特に金利) とは異なる情報を持つ住宅ローン モデルを用意する必要があります。ただし、住宅ローン残高の追跡は投資口座残高の追跡と非常に似ているため、住宅ローン モデルでは残高テーブルを活用する必要があります。しかし、住宅ローン テーブルと Investment_account テーブルの両方に十分な柔軟性を持たせるために、バランス テーブルを修正する方法がわかりません。

残高モデルに「タイプ」属性を追加し、次のような名前付きスコープを作成することを検討しました。

scope :investment_accounts, where(type: 'investment')
scope :mortgage, where(type: 'mortgate')

しかしその後、これが ActiveRecord クエリの奇妙な見た目につながるはずだと気付きました。インスタンスについて:

investment_accounts.balances.investment_accounts

mortgage.balances.mortgage

これはコードの匂いだと思います。これを正しく行う方法に関する提案はありますか?

4

2 に答える 2

1

残高には、必要に応じてのみ使用されるオプションのフィールドがいくつかあります。または、STI を使用して Balance をスーパー クラスにしてから、各タイプのサブクラスにすることもできます。したがって、親が Balance である MortgageBalance クラスと InvestmentAccountBalance クラスがあるとします。それらは同じテーブルを共有し、タイプ フィールドを持ち、モデルがそのタイプに基づいて区別できるようにします。しかし、それが必要かどうかはわかりません。緩めたままにして、ダックタイピングを使用できる場合があります。mortgage.balances住宅ローン用に調整された残高であり、違いを知る必要さえない場合があります。Mortgage オブジェクトとの関係によって違いが生じる可能性があります。わかる?

于 2013-09-12T03:14:38.397 に答える