纸质表格到数据库

时间:2011-01-04 20:24:34

标签: mysql ruby-on-rails

我正在使用Rails 3应用程序替换公司的纸质表单。纸质表格跨越两页,包含大量字段,复选框,下拉菜单等。

我想知道如何在数据库中建模 - 一种方法是在DB中为表单上的每个字段创建一个字段(当然是规范化的)。这将使广告或删除文件变得有些困难,因为需要迁移。另一种方法是做某种键/值存储(不 - MongoDB / CouchDB不是一个选项 - 需要MySQL)。执行键/值将非常灵活,但查询很麻烦。它会直接对抗ActiveRecord吗?

任何人都有一个很好的解决方案吗?

此致

雅各

2 个答案:

答案 0 :(得分:1)

我建议您将最常见的属性建模为单独的数据库字段。一旦设置了尽可能多的字段,就可以回退到使用伪随机属性的键值设置。我建议通过Hash方法ActiveRecord存储serialize的简单方法。例如:

class TPS < ActiveRecord::Base
  serialize :custom, Hash
end

@tps = TPS.create(:name => "Kevin", :ssn => "123-456-789", :custom => { :abc => 'ABC', :def => )'DEF' })
@tps.name # Kevin
@tps.ssn  # 123-456-789
@tps.custom[:abc] # ABC
@tps.custom[:def] # DEF

答案 1 :(得分:0)

如果您的表单相当静态,请继续为其制作模型,这是一种合理的方法,即使它看起来相当简陋。形式如此复杂并不是你的错,你只是想出一个考虑到这一点的解决方案。迁移以对其进行调整非常简单易于理解。

将其拆分为键/值版本会更好,但需要更多的工程设计。如果您希望这种形式经常进行频繁和彻底的修改,那么在这方面构建未来可能更有意义。您可以在WuFoo之类的内容中看到可能要构建的表单构建器的示例,但当然,构建表单构建器不能掉以轻心。