拆分轨道模型与使用一个模型组合形式

时间:2013-11-14 20:41:44

标签: ruby-on-rails ruby-on-rails-3 activerecord

我正在开发一个应用程序,允许公司中不同部门的各个人登录并编辑表单。每个部门都有表单中的特定字段,只允许他们编辑和查看。

如果我为整个字段集创建一个模型并根据谁登录,渲染包含必要字段的不同表单,它会是更有条理的代码吗?或者将部门特定字段拆分为自己的模型然后根据谁登录,渲染包含其特定字段的表单并通过某种外键将来自不同部门的记录关联起来会更好?

2 个答案:

答案 0 :(得分:2)

“这取决于”可能是最好的答案。 你有几个领域?每个部门表单类型存在多少逻辑?

如果将所有字段拆分为单独的模型(以及相应的表),如果您希望在填写完表后对表格进行全面概述,那将会很麻烦,因为它们将位于不同的表中。您必须浏览表单的每个关联才能获得完整的表单。

如果您仍想拆分它们,因为每个部门都有很多逻辑,您可以使用table_name将所有模型指向一个包含所有字段的“主”表。这样,您可以在一个表中拥有所有数据,并且可以轻松地检索它。但是,您还必须保存表单类型,以便在正确的模型中检索它,可能比它的价值更麻烦。 (如果将所有字段保存在一个表中是最好的方法,那么它也会被检索,或者更频繁地插入/更新。)

简单的表单可能适合一个模型。除非每个部门都有很多不可共享的代码,否则将表单拆分为单独的模型可能是不值得的。如果您将表单拆分为模型,您可能应该创建一个主表单模型,并让部门模型扩展它以适应任何可重复使用的表单逻辑。

毕竟,我会说,我更喜欢简单,所以我可能会把它保存在一个模型中。

答案 1 :(得分:0)

我会拆分字段,然后您可以使用accepts_nested_attributes_for设置模型以适当地构建表单。