我有兩個型號,一個典型的關係組尋找父母的列表:回報率3 - 從兒童
menu_options型號:
class MenuOption < ActiveRecord::Base
belongs_to :category
end
類模型:
class Category < ActiveRecord::Base
has_many :menu_options
end
我m在部分中顯示類別,然後在另一個部分中顯示menu_options。我目前通過的menu_options迭代,並收集所有,顯示了這個代碼的類別跳過空類別:
@menu_options = MenuOption.select_by_user_level(user_level)
categories = []
@menu_options.each do |m|
categories << m.category
end
@categories = categories.uniq
我一直在使用這樣做了很長一段時間的類似的方式得到,我想,如果有更多的方式來做到這一點?
**求助: 我忽略提及方法'select_by_user_level'使用不等式。我把你提供的代碼,並更新它來擺脫這種方法,並將.uniq合併到選擇類別的行中。結果如下。謝謝你的幫助!
@categories = Category.joins(:menu_options).where('menu_options.minimum_user_level <= ?', @user.user_level).uniq
@menu_options = MenuOption.where('minimum_user_level <= ?', @user.user_level)
回覆:你的最終解決方案 - 我不認爲你需要在這上面使用'.uniq'。你能測試一次嗎? – Dogbert
@Dogbert,我做過了,它返回的類別與其中的「MenuOption」一樣多。我原本沒有注意到,因爲我已經離開了'@categories = categories.uniq'這一行。 – Nic