我是一位经验丰富的 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
我已经成功创建了一个嵌套表单,它允许一起编辑日记帐条目及其帖子列表。但是,大多数日记帐分录都很简单,只有一个贷记分录和一个借记分录。在这种情况下,为了使数据输入更容易,我想要另一个表单,允许用户指定贷方账户、借方账户和金额。
根据我的研究,可以看到两种方法:
- 单表继承,其中 SimpleJournalEntry(扩展 JournalEntry)
- 使用 ActiveModel 制作不直接附加到数据库的 SimpleJournalEntry 模型,并在控制器中自己处理数据库更改
SimpleJournalEntry 模型将具有贷方账户、借方账户和金额,并将用于编辑简单记录。现有的 JournalEntry 模型仍然存在,以允许编辑更复杂的记录。
处理这种事情的“轨道方式”是什么?还有其他我没有考虑过的选择吗?