Rails - 支持为多个模型创建草稿的好方法

时间:2012-12-29 20:50:47

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

我想允许用户创建几个模型的草稿(例如文章,博客文章等)。我正在考虑通过为我当前的每个模型(例如articleDraft,blogpostDraft等)创建草图模型来实现这一点。有一个更好的方法吗?为应该支持草稿的每个现有模型创建一个新模型似乎很麻烦,并且需要做很多工作。

4 个答案:

答案 0 :(得分:7)

我认为更好的是在表格中有一个标志(例如:名为草稿的int列),以确定记录是否为草稿。

如我所见,将这样一个列放在一个单独的表中的优点:

  1. 很容易让你的记录非选秀(只是改变旗帜)

  2. 您不会复制数据(因为实际上您会在草稿和非草稿记录中使用相同的内容)

  3. 编码很简单,没有复杂的登录

  4. 所有数据都在一个地方,因此错误的空间

答案 1 :(得分:1)

在Ruby Toolbox中查看Active Record Versioning类别。现任领导人是Paper Trail

答案 2 :(得分:0)

我走下状态机路线。当模型仅处于特定状态时,您可以验证每个属性。比多个复选框容易得多,每个状态更改都可以有一个与之关联的操作(或操作)。

答案 3 :(得分:0)

在模型中有一个标志有一些缺点:

  • 除非数据有效,否则无法另存为草稿。当然,您可以跳过Rails模型中的验证,但考虑数据库中定义的“NOT NULL”列

  • 要查找“真实”记录,您必须使用过滤器(例如“WHERE draft = FALSE”)。这可能会降低查询性能。

作为替代方案,请查看我的宝石drafting。它将不同模型的草稿存储在单独的表中。