私は経験豊富なWeb開発者ですが、Railsは初めてです。私は複式簿記データベースに基づいた予算申請書を書いています。データベースにはトランザクションを表すジャーナルエントリが含まれており、各ジャーナルエントリには複数の投稿があります。各投稿にはアカウントと金額があります。
これが私のモデルの簡略化されたバージョンです:
class Posting < ActiveRecord::Base
belongs_to :account
belongs_to :journal_entry
attr_accessible :account_id, :amount
end
class JournalEntry < ActiveRecord::Base
has_many :postings, :dependent => :destroy
attr_accessible :narrative, :posting_date, :postings_attributes
accepts_nested_attributes_for :postings, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| k == '_destroy' or v.blank? } }
end
ジャーナルエントリとその投稿リストを一緒に編集できるネストされたフォームを正常に作成しました。ただし、ほとんどの仕訳入力は単純で、1つの貸方記入項目と1つの借方記入項目があります。この場合のデータ入力を簡単にするために、ユーザーがクレジットアカウント、デビットアカウント、および金額を指定するだけの別のフォームが必要です。
私の研究から、これを行うための2つの方法を見ることができます。
- SimpleJournalEntry(JournalEntryを拡張する)の単一テーブル継承
- ActiveModelを使用して、データベースに直接接続されていないSimpleJournalEntryモデルを作成し、コントローラーでデータベースの変更を自分で処理します
SimpleJournalEntryモデルには、クレジットアカウント、デビットアカウント、および金額があり、単純なレコードの編集に使用されます。より複雑なレコードの編集を可能にするために、既存のJournalEntryモデルは引き続き存在します。
この種のことを処理するための「レールの方法」はどれですか?私が考慮していない別のオプションはありますか?