Ruby on rails 基于模型过滤嵌套数组

Ruby on rails 基于模型过滤嵌套数组,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个嵌套数组,希望删除与模型上的信息匹配的条目 我的数组大致如下所示: [{"id"=>"72157627540544488", "primary"=>"6090588224", "photos"=>"49", "videos"=>0, "title"=>"Title1", "description"=>""}, {"id"=>"72157627309708150", "primary"=>"5987891163", "photos"=>

我有一个嵌套数组,希望删除与模型上的信息匹配的条目

我的数组大致如下所示:

[{"id"=>"72157627540544488", "primary"=>"6090588224", "photos"=>"49", "videos"=>0, "title"=>"Title1", "description"=>""},
{"id"=>"72157627309708150", "primary"=>"5987891163", "photos"=>"49", "videos"=>0, "title"=>"Title2", "description"=>""},
{"id"=>"72157626646787712", "primary"=>"5687687064", "photos"=>"11", "videos"=>0, "title"=>"Title3", "description"=>""},
{"id"=>"72157626646672290", "primary"=>"5687629990", "photos"=>"33", "videos"=>0, "title"=>"Title4", "description"=>""}] 
我的模型是:

id               :integer         not null, primary key
name             :string(255)
set_id           :integer
thumb_url        :string(255)
created_at       :datetime
updated_at       :datetime

我试图完成的是从数组中删除
id
值在我的模型中的任何
set\u id
中重复的所有元素。

您可以执行以下操作:

array.reject{|element| Model.exists?(:set_id => element['id'])}
其中array是数组,Model是Model类。这将返回一个新数组,其中删除了重复id的元素

返回不包含元素的数组副本,其中传入的块返回true


如果数据库中存在具有给定条件的模型,则返回true。

您可以执行以下操作:

array.reject{|element| Model.exists?(:set_id => element['id'])}
其中array是数组,Model是Model类。这将返回一个新数组,其中删除了重复id的元素

返回不包含元素的数组副本,其中传入的块返回true


如果数据库中存在具有给定条件的模型,则返回true。

成功了!只是想知道是否有办法做到这一点,但使用另一个数组而不是模型。
include?
可以吗?我也尝试过这样做,但使用了实例变量而不是模型来避免对数据库进行另一次查询。我提出了这样的想法:“array.reject{| element |@variable.any?{| item | item.set|u id==element['id']}是的,这很有效。我真的想不出一种更简洁的方法来处理数组。它奏效了!只是想知道是否有办法做到这一点,但使用另一个数组而不是模型。
include?
可以吗?我也尝试过这样做,但使用了实例变量而不是模型来避免对数据库进行另一次查询。我提出了这样的想法:“array.reject{| element |@variable.any?{| item | item.set|u id==element['id']}是的,这很有效。我真的想不出一种更简洁的方法来处理数组。