我有两个型号,一个典型的关系组寻找父母的列表:回报率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