Ruby比较对象数组中的属性

时间:2016-05-24 15:26:16

标签: ruby-on-rails arrays ruby object compare

我在Ruby on Rails项目中有一个User模型和一个Concert模型。用户有一个数组,其中包含他最喜欢的乐队的所有音乐会,而Concert模型则包含城市和日期属性。

我需要做的是遍历这一系列音乐会,看看他们是否在同一个城市同一天发生任何音乐会。

这样的事情:

  @user_concerts = [concert1, concert2, concert3....]

我想我必须在这个数组上循环两次,但我对此有点困惑。

我的数据库制作方式,我使用下面的查询来获取用户收藏的乐队的ID。

bands_ids_array =  UsersBand.where(user_id: current_user.id, is_favorite: true).pluck(:band_id)
    @user_favorite_bands = [] 
    bands_ids_array.each do |id|
         @user_favorite_bands << Band.find(id)
        end

UsersBandUserBand模型之间的关系数据库。它包含user_idband_id和布尔字段is_favorite

为了获得所有音乐会,我目前正在做以下事情:

@user_concerts = []
@user_favorite_bands.each do |band|
        band.concerts.each do |concert|
            @user_concerts.push(concert)
        end
    end

我尝试嵌套两个“每个”循环,一个嵌套在“每个”内部的while循环试图比较所有的音乐会,看他们是否有相同的城市或日期,但是没有用。

编辑:我这样做了,它对我有用:

for i in (0..@user_concerts.length) do 
        for j in (i+1..@user_concerts.length-1) do
            if @user_concerts[i].city == @user_concerts[j].city && @user_concerts[i].date == @user_concerts[j].date
                matches.push(@user_concerts[i])
                matches.push(@user_concerts[j])
            end
        end

任何帮助将不胜感激。非常感谢你们。

0 个答案:

没有答案