Rails 4:有一个has_many关联模型的已发布和草稿版本吗?

时间:2014-03-12 00:52:51

标签: ruby-on-rails-4 versioning activemodel

我对此很认真,并且搜索了很多,但似乎没有多少人遇到过这种情况。使用Rails 4,使用has_many关联和某种程度的版本控制进行发布/草稿设置的直接方式是什么?

假设我们有以下设置:

class Parent < ActiveRecord::Base
    has_many :children
    has_many :other_children
end

class Child < ActiveRecord::Base
    belongs_to :parent, inverse_of: :children
end

class OtherChild < ActiveRecord::Base
    belongs_to :parent, inverse_of: :other_children
end

我想要实现的目标如下:

1)保持已发布的父级和子级的版本。因此,有一个固定的状态published,孩子们在出版时也保持原样。

2)保留父母和子女的草稿版本,可以单独修改(儿童可以被销毁)。

3)保留已发布的Parent / Children版本的版本历史记录。

我一直在检查像paper_trail这样的版本化宝石,但是它们并没有削减它主要是因为我要求孩子们保持完整并且很容易获得已发布的版本。使其工作似乎需要做很多额外的工作,而且构建更具体的设置可能会更快。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我这样做的方法是将草稿和已发布的版本保存在同一个表中,然后使用deep_cloneable gem来克隆对象。这是一个了不起的宝石。

已发布的版本设置了字段published_at,而草稿版本则没有。{这是我能找到的最顺畅的方法。