Ruby on rails 从对象列表中获取关联对象的Activerecord列表

Ruby on rails 从对象列表中获取关联对象的Activerecord列表,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我是Rails的新手,如果这是一个愚蠢的问题,我道歉。我试着在网上寻找答案,但我对术语不太确定,所以我发现很难找到答案 基本上,我有两个模型“组”和“类”。组有一个类别,类别属于组。我想做的是从组列表中获取一个类别列表 大概是这样的: @组=组。查找(:全部) @类别=@groups.> 因此,我可以在视图中这样做: <% @categories.each do |cat| %> <%= cat.title %> <% end %> 以及其他各种

我是Rails的新手,如果这是一个愚蠢的问题,我道歉。我试着在网上寻找答案,但我对术语不太确定,所以我发现很难找到答案

基本上,我有两个模型“组”和“类”。组有一个类别,类别属于组。我想做的是从组列表中获取一个类别列表

大概是这样的:

@组=组。查找(:全部)
@类别=@groups.>

因此,我可以在视图中这样做:

<% @categories.each do |cat| %>  
    <%= cat.title %>
<% end %>
以及其他各种各样的情况

我真的很感激一个解决方案和/或一个指向我可以自己学习的地方的指针


非常感谢

我明白了!当你不知道它叫什么的时候,很难知道该搜索什么。使用纯Ruby,通过Array类的
map
instance方法,可以轻松实现这一点:

categories = groups.map{|g| g.category}
这方面的速记方法是:

categories = groups.map(&:category)
map
array方法为每个元素调用给定的块,并将所有返回值滚动到一个数组中。

我想不出要插入的魔法代码,但是您可以很容易地创建列表,而不需要这个魔法代码

@categories = []
@groups.each do |group|
  @categories << @group.category unless @categories.include?(@group.category)
end
@categories=[]
@组。每个do |组|

@分类这应该快得多

@categories = Category.where(id: @groups.pluck(:category_id))
@categories = Category.where(id: @groups.pluck(:category_id))