Ruby on rails 从数组返回未包含在记录字段';s结果
我有一张表Ruby on rails 从数组返回未包含在记录字段';s结果,ruby-on-rails,Ruby On Rails,我有一张表Animal,上面有一个字段specie 物种可以是狗、猫、狮子、鸟、大象……。 我们知道,我们还可以通过以下方式查找所有记录: @animals = Animal.all.where(specie: ["dog", "cat", "lion", "bird", "elephant", ...] ) 假设我有10000个记录和10000个可能的物种可以注册。我只需要一个数组,其中包含数据库中尚未包含的所有物种。我怎样才能以最有效的方式做到这一点呢?假设你在某个地方有一个已知物种的集合
Animal
,上面有一个字段specie
物种可以是狗、猫、狮子、鸟、大象……。
我们知道,我们还可以通过以下方式查找所有记录:
@animals = Animal.all.where(specie: ["dog", "cat", "lion", "bird", "elephant", ...] )
假设我有10000个记录和10000个可能的物种可以注册。我只需要一个数组,其中包含数据库中尚未包含的所有物种。我怎样才能以最有效的方式做到这一点呢?假设你在某个地方有一个已知物种的集合:
species=[“狗”、“猫”、“狮子”、“鸟”、“大象”…]
缺失物种=物种-动物。不同。采摘(:物种)
假设你的记忆中某处有一个已知物种的集合:
species=[“狗”、“猫”、“狮子”、“鸟”、“大象”…]
缺失物种=物种-动物。不同。采摘(:物种)
我也同意@chaitanya。在RAM中保留10k字符串根本没有效率。最好创建一个物种表并与动物进行左连接。然后可以排除交叉物种
class Specie
has_many :animals
field :name
end
class Animal
belongs_to :specie
end
Specie.left_joins(:animals).where('animals.id' => nil).distinct.pluck(:name)
我也同意@chaitanya。在RAM中保留10k字符串根本没有效率。最好创建一个物种表并与动物进行左连接。然后可以排除交叉物种
class Specie
has_many :animals
field :name
end
class Animal
belongs_to :specie
end
Specie.left_joins(:animals).where('animals.id' => nil).distinct.pluck(:name)
嗨,谢谢你,但当你做动物。所有。哪里。不(物种:[“狗”,“猫”,“狮子”,“鸟”,“大象])你将找不到任何记录…我认为需要单独制作一个表“物种”并将其与“动物”联系起来嗨,谢谢你,但当你做动物。所有。哪里。不(物种:[“狗”,“猫”,“狮子”,“鸟”,“大象])你将找不到任何记录……我认为需要制作单独的表“物种”,并将其与“动物”联系起来。在这种情况下,你是对的。在我的例子中,我需要一个数组,因为数字10.000只是说我不想创建一个each循环,所以它的性能很慢。在这个场景中,你是对的。在我的例子中,我需要一个数组,因为数字10.000只是说我不想创建一个each循环,所以它的性能很慢。