Ruby ActiveRecord是否批量检索新插入的记录?
这与我以前的经历有关 我可以使用以下查询从ActiveRecord获取批次记录:Ruby ActiveRecord是否批量检索新插入的记录?,ruby,activerecord,dart,Ruby,Activerecord,Dart,这与我以前的经历有关 我可以使用以下查询从ActiveRecord获取批次记录: Client.offset(15 * iteration).first(15) 我遇到了一个用户输入新记录的问题 假设有100条记录,批次为15。 前6次迭代(90条记录)和最后一次迭代(10条记录)有效。但是,如果出现新条目(总共101条记录),程序将失败,因为它将: a) 如果迭代计数器设置为增量,它将查询101范围以外的记录,结果不返回任何内容 b) 如果迭代计数器修改为仅在15个项目的整批完成时递增,则重
Client.offset(15 * iteration).first(15)
我遇到了一个用户输入新记录的问题
假设有100条记录,批次为15。
前6次迭代(90条记录)和最后一次迭代(10条记录)有效。但是,如果出现新条目(总共101条记录),程序将失败,因为它将:
a) 如果迭代计数器设置为增量,它将查询101范围以外的记录,结果不返回任何内容
b) 如果迭代计数器修改为仅在15个项目的整批完成时递增,则重复最后14个项目加上1个新项目
如何获取新发布的记录
省道代码:
_getData() async {
if (!isPerformingRequest) {
setState(() {
isPerformingRequest = true;
});
//_var represents the iteration counter - 0, 1, 2 ...
//fh is a helper method returning records in List<String>
List<String> newEntries = await fh.feed(_var);
//Count number of returned records.
newEntries.forEach((i) => _count++);
if (newEntries.isEmpty) {
..
}
} else {
//if number of records is 10, increment _var to go to the next batch of 10.
if(_count == 10) {
_var++;
_count = 0;
}
//but if count is not 10, stay with the same batch (but previously counted/display records will be shown again)
}
setState(() {
items.addAll(newEntries);
isPerformingRequest = false;
});
}
}
\u getData()异步{
如果(!isPerformingRequest){
设置状态(){
isPerformingRequest=true;
});
//_var表示迭代计数器-0,1,2。。。
//fh是一种帮助器方法,返回列表中的记录
列出新条目=等待fh.feed(_var);
//计数返回的记录数。
newEntries.forEach((i)=>\u count++);
if(newEntries.isEmpty){
..
}
}否则{
//如果记录数为10,则增加_var以转到下一批10。
如果(_count==10){
_var++;
_计数=0;
}
//但如果计数不是10,则保持同一批(但先前计数/显示的记录将再次显示)
}
设置状态(){
items.addAll(新条目);
isPerformingRequest=false;
});
}
}
继续,向我们展示一些您正在尝试执行的操作的代码。对于101条记录,请在控制台中尝试User.offset(90).limit(15)
和User.offset(105).limit(15)
。第一个应返回11条记录,第二个应返回空数组。如果是这样的话,那么可能是迭代了7次而没有处理空数组?这是我的猜测,但如果我错了,你最好发布错误消息。