发票模型推荐

时间:2011-10-04 15:35:43

标签: ruby-on-rails ruby model

我刚开始开发发票应用。我想听听你对这个困境的看法和建议。

发票有一个客户部分。可以从下拉选择菜单中选择客户端,也可以直接将其输入文本字段。假设这只是一次性购买,客户将永远不会回来。我应该有这两列:client_id和client_field所以这两个列中的任何一个都可以填写吗?消极的一面是很多client_field都是空的。或者我应该不使用client_field而只是添加一个新客户端,即使客户端只会被使用一次?

2 个答案:

答案 0 :(得分:1)

拥有自动填写字段是否有任何问题,如果在没有匹配ID的情况下提交,您只需创建客户端并将其链接进去?

这就是用户的观点所期望的,这就是QuickBooks等应用程序多年来的运作方式。

答案 1 :(得分:1)

保持一致并使用单独的客户端模型和client_id,即使对于仅出现一次的客户端也是如此。如果您同时拥有client_idclient_model,则会有额外的复杂性:

  • 您的验证必须同时检查并确保一切都一致。
  • 您需要o.client.try(:name) || o.client_field等所有地方才能显示数据。
  • 如果您将来更改客户记录的结构,则必须重新格式化“表格中的表格”client_field kludge。
  • 任何基于数据库的报告都将从简单的SQL转变为LEFT JOIN和CASE语句的怪异。

这些只是我头脑中的几件事。

如果您担心有大量条目的下拉菜单 - 并且您应该担心超过20个条目的任何下拉菜单 - 那么只需使用自动填充文本输入或将下拉菜单限制在最高级别~20客户端并使用自动完成的文本输入(或者甚至是基于JavaScript的组合框);您的用户,会计师和其他执行大量数据输入和开发票的人通常不会使用下拉菜单,因此很有可能不会使用下拉菜单。