Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails4,具有合并多表的处理模型_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails rails4,具有合并多表的处理模型

Ruby on rails rails4,具有合并多表的处理模型,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我的Rails项目使用SMS服务 短信服务每月都会制作新的表格,名为“喜欢”MMS\U 201410,MMS\U 201411,MMS\U 201412 等候台是MMS_列表 如何像一个模型一样合并多个表 我想用kaminari列出一个索引页 @mm = MergeMms.page(params[:page]).per(30) 有可能吗?您可以在数据库中创建一个视图,将表中的行合并在一起 CREATE VIEW MMS_List AS SELECT * FROM MMS_201412 UNIO

我的Rails项目使用SMS服务

短信服务每月都会制作新的表格,名为“喜欢”MMS\U 201410MMS\U 201411MMS\U 201412

等候台是MMS_列表

如何像一个模型一样合并多个表

我想用kaminari列出一个索引页

@mm = MergeMms.page(params[:page]).per(30)

有可能吗?

您可以在数据库中创建一个视图,将表中的行合并在一起

CREATE VIEW MMS_List AS
SELECT * FROM MMS_201412
UNION ALL
SELECT * FROM MMS_201411
...
通常,这种解决方案很糟糕,因为每次出现新的MMS表时都必须更新视图(但这可以通过cron作业解决)。在Ruby中,您可以通过执行
SELECT
UNION
以同样的方式解决这个问题,但我不推荐这样做,因为谁知道当您试图在
UNION
上翻页时查询计划器会做什么

也许最简单的解决方案是编写一个cron作业,尝试查询当前月份的表,如果该表存在且以前未被处理,它将
将表中的所有行插入
MMS\u列表中(
SELECT*from new\u table INSERT into MMS\u List
或类似内容)。然后将一行插入到另一个表中(我们称之为
MMS\u ready\u processed
),该表跟踪已处理的表,这样就不会重复插入记录。您需要确保请求新发现的表中的数据的查询可以获得该表的独占读锁,这样您就不会只读取一些行(例如,如果您的cron作业在创建新表的过程中运行,并且当时只插入了一些数据)

这是一个您应该首先尝试在数据层解决的问题。

Thx您的建议:)我将尝试联合表@克费德克