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
Ruby on rails Rails查询:对象';s数组匹配匹配数组中的任何元素_Ruby On Rails - Fatal编程技术网

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方法吗?