ruby-on-rails 正在取回has_many的has_many中的元素

iszxjhcz  于 2022-12-05  发布在  Ruby
关注(0)|答案(1)|浏览(162)

我有以下几点:

Menu 
  -items
    -notes

一个菜单有_多个项目,一个项目有_多个注解。我想要一个菜单的所有注解。
我在想下面这样的事情:

class Menu < ActiveRecord::Base
  # ...
  def notes
    items.where('notes.count > 0').notes #?
  end

我目前是这样做的:

def notes
    Note.where('item_id in (?)', items.map(&:id)
  end

但这似乎有点丑陋。
我如何才能取回与该菜单项关联的笔记?

pvcm50d1

pvcm50d11#

您可以通过关联实现此目的:

class Menu
  has_many :items
  has_many :notes, through: :notes
end

它返回一个ActiveRecord::AssociationRelation,所以你只得到一个可链接的作用域。

相关问题