2013-09-12 6 views
0

У меня есть две функции уровня уровня, которые заполняют два массива, my_favorite_brands и my_favorites. Они определяются следующим образом:Пытается связать два списка

def self.my_favorite_brands 
    brand_list = Array.new 
    Favorite.my_favorites.each do |favorite| 
    brand_list.push(favorite.style.shoe.brand) 
    end 
    brand_list.uniq 
end 

А вот my_favorites:

def self.my_favorites 
    Favorite.where(:user => current_user) 
end 

Я хочу напечатать каждую Brand в my_favorite_brands и при этом для каждого Brand распечатки всех этого связано Favorites в my_favorites. Соотношение между двумя моделями Brand и Favorite заключается в следующем. Brand имеет много Shoes, который имеет много Styles. Favorite принадлежит Style и принадлежит User. Вот некоторые, вероятно, нефункциональные псевдо-иш (в том смысле, что они не работают) код, который эмулирует то, что я хочу делать.

#Controller stuff 
@fav_brands = Brand.my_favorite_brands 
@fav_favorites = Favorite.my_favorites 
#in the view 
favorites_by_brand = Array.new 
@fav_brands.each do |brand| 
    favorites_by_brand = @fav_favorites.map do |favorite| 
    unless favorite.style.shoe.brand == brand 
     @fav_favorites.delete("favorite") 
    end 
    favorites_by_brand.each do |favorite| 
    puts favorite.style 
    end 
end 

Я пытаюсь создать полный список избранных, где favorite.style.shoe.brand равно текущей марки я Перебор, так что я могу отобразить стили, Brand.

+1

В качестве альтернативы вы можете определить 'self.my_favorite_brands' как просто' Favorite.my_favorites.map {| f | f.style.shoe.brand} .uniq'. – lurker

+0

Как определяется «Brand.my_favorite»? – lurker

+0

@mbratch извините, это опечатка. Я починил это. – Thalatta

ответ

0

Я выяснил, как выполнить то, что я хочу достичь, хотя это, вероятно, не Идеально.

styles_of_favorites = @fav_favorites.map {|favorite| favorite.style} 
@fav_brands.each do |brand| 
    brand.shoes.each do |shoe| 
    shoe.style.each do | style| 
     if styles_of_favorites.include?(style) 
     puts style 
     end 
    end 
    end 
end 
Смежные вопросы