基于Model过滤嵌套数组

时间:2011-11-21 23:19:32

标签: ruby-on-rails ruby-on-rails-3

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

我的数组看起来大致如下:

[{"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_id重复{{1}}值的所有元素。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

array.reject{|element| Model.exists?(:set_id => element['id'])}

其中array是数组,Model是模型类。这将返回一个新数组,其中删除了重复ID的元素。

Array.reject返回数组的副本,而传入的块的元素不返回true。

如果数据库中存在具有给定条件的模型,

ActiveRecord.exists?将返回true。