我有两个表pages
和menu_items
,pages
有很多menu_items
和menu_items
belongs_to pages
。在Rail 4中,如何仅选择与pages
无关的menu_items
?
提前致谢!
答案 0 :(得分:0)
也许Page.where
是您正在寻找的。实际上,where
方法通过Page
数据库调用指定类型的所有对象。通过使用菜单ID等于nil的参数调用它,您将搜索没有菜单ID的所有页面。
理想情况下,您想致电Page.where(page.menu_items.empty?)
,但当然,这是不允许的。
环顾this question或多或少与你的完全相同。他们解决了这个问题:
Page.includes(:menu_items).where( :menu_items => {:page_id=>nil} )
答案 1 :(得分:0)
以下各项均应有效:
Page.includes(:menu_items).where( menu_items: { page_id: nil} )
或
Page.find(:all, conditions: { :menu_items.count: 0 } )
或
Page.where('id NOT IN (SELECT DISTINCT(page_id) FROM menu_items)')