Ruby on rails 如何为模型上的活动使用单独的表

Ruby on rails 如何为模型上的活动使用单独的表,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我使用的是Rails 4.2.6和Postgres 9.4 我有一个可查询的表,用于管理查询数据。它有大约20k行,几个不同的模型在这一点上会聚。我们有能力“重建”表(即删除表中的所有内容并重新创建)。但是,这需要大约20分钟,并且不要在生产中进行 有没有办法告诉我们的queryables模型在类似“queryables\u future”的位置构建一个副本并在那里重建表,完成后,删除我们当前的“queryables”表并将“queryables\u future”重命名为“queryables

我使用的是Rails 4.2.6和Postgres 9.4

我有一个可查询的表,用于管理查询数据。它有大约20k行,几个不同的模型在这一点上会聚。我们有能力“重建”表(即删除表中的所有内容并重新创建)。但是,这需要大约20分钟,并且不要在生产中进行


有没有办法告诉我们的queryables模型在类似“queryables\u future”的位置构建一个副本并在那里重建表,完成后,删除我们当前的“queryables”表并将“queryables\u future”重命名为“queryables”?或任何其他提议的解决办法

这是在队列后台作业中使用Sidekiq等工具执行的操作。后台作业在一个独立于主web应用程序的进程中运行,因此需要进行一些配置和设置,但一旦您这样做,它们将非常强大

这是一个相当广泛的主题,因此我建议查看以下链接:


我不认为您至少可以在不停机的情况下完成这项工作,那么为什么要用这种方式而不仅仅是清除表呢?无论如何,一种稍微不同的方法是只编写一个Rake任务来重命名
Queryable
表(例如,从queryables到queryables\u归档)然后再次构建
Queryable
表,不是吗?是的,问题是构建大约需要20分钟。我宁愿在后台构建,然后切换这两个选项-因此没有停机时间20分钟来构建一个[空]表清理桌子是一种可能,但由于必须了解所有潜在的边缘情况,这很复杂。我更喜欢两种策略,但重建策略是在排除停机时间的情况下完成的。想知道如果设置了标志,是否可以在before\u create中使用self.table\u name