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']}是的,这很有效。我真的想不出一种更简洁的方法来处理数组。