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

我想打印出每个Brandinmy_favorite_brands并且在这样做的同时,对于每个Brand打印出的所有它都关联Favoritesmy_favorites. Brand两个模型之间的关系Favorite如下。Brand有很多Shoes有很多StylesFavorite属于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

4

1 回答 1

0

我想出了一种方法来完成我想要完成的事情,尽管它可能不是 Ideal 。

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
于 2013-09-12T19:48:29.147 回答