Ruby on rails Rails查询:对象';s数组匹配匹配数组中的任何元素
好吧,对不起,如果问题让人困惑,我会在这里澄清的。例如,您有一个Ruby on rails Rails查询:对象';s数组匹配匹配数组中的任何元素,ruby-on-rails,Ruby On Rails,好吧,对不起,如果问题让人困惑,我会在这里澄清的。例如,您有一个Train对象,它有一列stations。因此,此stations列包含列车行驶到的所有火车站的数组。例如,现在我们有一个称为north\u stations的站点阵列。我们怎样才能找到所有开往任何北站的列车 在常规ruby中,我们可以执行以下操作: array_one = [1,2,3,4] array_two = [2,3,4,5] (array_one & array_two).any? 如果两个数组至少有一个公共元
Train
对象,它有一列stations
。因此,此stations
列包含列车行驶到的所有火车站的数组。例如,现在我们有一个称为north\u stations
的站点阵列。我们怎样才能找到所有开往任何北站的列车
在常规ruby中,我们可以执行以下操作:
array_one = [1,2,3,4]
array_two = [2,3,4,5]
(array_one & array_two).any?
如果两个数组至少有一个公共元素,则返回true。那么,我如何传递一个数据库查询,返回在Train.stations
和north\u stations
之间共享一个元素的所有列车
顺便说一句,我确实遇到过,但它是用ID处理的,我在rails控制台中尝试过使用这个方法,但什么都想不出来
更新1:
好的,我使用的是Postgres,表列类型是string
。在这个模型中,我使用序列化来允许它保存一个值数组。这两个阵列的一个示例可能是
Train.station = [
"station 1",
"station 2",
"station 3"
]
north_station = [
"station 2",
"station 4",
"station 6"
]
既然Train.station
至少去了北站的1个,我想返回这个特定的Train
对象。因此,当我做火车时,其中(?未知方法??)
它将返回至少1个北站的所有火车 你能发布你的模型和两个数组的例子吗?Postgres可以让你存储数组。更好的方法是在trains
表中创建一个新字段stations
,并使用该字段而不是序列化字符串。然后使用内置的PostgreSQL函数进行数组搜索,将列切换到text
数组,正如@SteveTurczyn所说的那样。然后试着忘记serialize
甚至存在serialize
是一个陷阱,它会向数据库中抛出一大堆YAML,并且没有合理的查询方法,因此使用serialize
几乎总是一个坏主意。那么,将查询传递给pg函数的唯一方法是什么?或者我可以使用activerecord方法吗?