我在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
UsersBand
是User
和Band
模型之间的关系数据库。它包含user_id
,band_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
任何帮助将不胜感激。非常感谢你们。