Ruby on rails Rails—其中ID数组上的条件不为';不要运行整个阵列
在我的应用程序中,我正在使用ID(大约1000个ID)在我的Ruby on rails Rails—其中ID数组上的条件不为';不要运行整个阵列,ruby-on-rails,arrays,ruby-on-rails-5,conditional-statements,where-clause,Ruby On Rails,Arrays,Ruby On Rails 5,Conditional Statements,Where Clause,在我的应用程序中,我正在使用ID(大约1000个ID)在我的用户模型中执行where条件,如下所示: ids = "1,2,3,4,5,6,... # to 1000" users = User.where(id: ids.split(',').map(&:to_i) ) repl.it中的Ruby输出 但当我运行这个时,它只运行前108个ID,而忽略其余ID 是否有任何限制或我做错了什么 附言: 它不返回任何错误,只运行前108个ID SQL输出 User.where(id:id.s
用户
模型中执行where
条件,如下所示:
ids = "1,2,3,4,5,6,... # to 1000"
users = User.where(id: ids.split(',').map(&:to_i) )
repl.it中的Ruby输出
但当我运行这个时,它只运行前108个ID,而忽略其余ID
是否有任何限制或我做错了什么
附言:
它不返回任何错误,只运行前108个ID
SQL输出
User.where(id:id.split(',')).to_sql
SELECT `user`.* FROM `user` WHERE `user`.`id` IN (1,2,3,4....1000)
任何提示都将受到赞赏并提前感谢
ids
是一个整数数组-为什么要将它们拆分并转换为整数?这不是一个整数数组,而是一个字符串。请尝试使用User.where(id:ids.split(','))
,无论列是integer还是varchar,Rails都会在使用where
@Rubioli时处理这些问题:它运行所有列。正如您生成的查询所证明的那样。也许数据库中有那么多记录。这里有这么多问题,为什么首先要将ID存储为逗号分隔的字符串?如果它是一些遗留的垃圾,并且已经做出了决定,为什么不使用子查询并获取字符串,然后在数据库中使用类似于regexp\u split\u to\u array
?