Ruby on rails Rails—支持为多个模型创建草稿的好方法
我想允许用户创建几个模型的草稿(如文章、博客文章等)。我正在考虑通过为我当前的每个模型(如articleDraft、blogpostDraft等)创建一个草稿模型来实现这一点。有更好的方法吗?为每一个应该支持草稿的现有模型创建一个新模型似乎很麻烦,而且工作量很大。我认为最好在表中有一个标记(例如:int列称为draft),以确定记录是否是草稿 有这样一个列而没有单独的表的优点,如我所见:Ruby on rails Rails—支持为多个模型创建草稿的好方法,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我想允许用户创建几个模型的草稿(如文章、博客文章等)。我正在考虑通过为我当前的每个模型(如articleDraft、blogpostDraft等)创建一个草稿模型来实现这一点。有更好的方法吗?为每一个应该支持草稿的现有模型创建一个新模型似乎很麻烦,而且工作量很大。我认为最好在表中有一个标记(例如:int列称为draft),以确定记录是否是草稿 有这样一个列而没有单独的表的优点,如我所见: 很容易使您的记录成为非草稿(只需更改标志) 您不会复制数据(因为实际上,您将在草稿和非草稿记录中拥有相同的数
在Ruby工具箱中查看该类别。现任领导人是 我会走状态机路线。您可以仅在模型处于特定状态时验证每个属性。比多个复选框容易得多,每个状态更改都可以有一个(或多个)与之关联的操作 在模型中使用标志有一些缺点:
- 除非数据有效,否则不能另存为草稿。当然,您可以跳过Rails模型中的验证,但请考虑数据库中定义的“notnull”列
- 要查找“真实”记录,必须使用过滤器(如“WHERE draft=FALSE”)。这会降低查询性能
drafts
表中。它将对象状态作为JSON存储在对象
列中,并可以选择将表示更改的JSON数据存储在对象_changes
列中
Draftsman允许您为每个模型创建单独的草稿模型(例如,文章草稿
,博客文章草稿
)。我同意这种方法相当麻烦,而且容易出错
将草稿数据拆分为单独的模型(或者根据sameera207的回答,在主表上使用布尔draft
标志)的真正优势在于,您不会得到一个包含大量记录的巨大drafts
表。我想说的是,只有当您的应用程序有大量的使用时,这才成为一个真正的问题
总之,我的最终建议是将所有草稿数据存储在主模型(
blog
)或单个drafts
表中,如果应用程序需要扩展,请根据需要进行分离。希望这样做,但这些模型中的许多都有必填字段,但我希望我的草稿没有任何要求跳过记录中的验证是草稿(可以使用“with_options”),例如:with_options:if=>:is_admin?do | admin | admin.validates:password,:length=>{:minimum=>10}admin.validates:email,:presence=>true end,检查5.4 in是否可以保存未通过验证的修订?例如,一篇文章应该总是有一个标题,但一篇文章草案可以有一个空标题title@zazinteractive,是的,请参见sameera207的回答中的评论。