1

我不知道正确的数据库术语来解释我在问什么,所以我会尽力解释它。

我有一个发票模型,它有一个发票人。

发票人可以是内部部门或外部部门。

我可以用一个发票表来设置它,该表的列让人感觉很乱(它会留下很多 nil 列)。

我可以设置一个 internal_invoicee 和 external_invoicee 表,并且只根据需要创建一个看起来更好的表,但是我必须管理 2 个不同的关联。

然后,我可以在我的发票模型中设置一个 invoicee 方法,该方法根据存在的发票返回内部或外部发票,并管理业务逻辑以便只存在一个。

第二种解决方案似乎是更好的方法,但对我来说仍然感觉很混乱。在 Rails 中有内置的方法吗?感觉就像一个多态关联,只是反向。

我从来没有看过 NoSQL 数据库,但这是他们擅长的事情吗?

4

1 回答 1

1

您是否将拥有更多的部门,而不仅仅是内部或外部?或者您是否需要对单独的部门表进行级联更新?

如果没有,则将 boolean department_type 列添加到 invoicee 表。不需要关系。

如果是这样,请在您的发票模型中编写一个方法来确定具有外键的部门类型。将 department_id 和 invoice_id 列添加到 invoicee 并在 invoice 上添加 invoicee_id 列。

在发票人、部门和发票上使用has_one :department和。has_many :invoiceshas_many :invoicesbelongs_to :invoicee

旁注:你能选择一个比发票人更好的名字吗?离发票太近了!

于 2012-07-18T07:41:06.217 回答