Sql 如何在作用域中使用联接?

Sql 如何在作用域中使用联接?,sql,ruby-on-rails,Sql,Ruby On Rails,我有一个页面,使用了多个过滤器,除了一个过滤器,其他一切都正常。不起作用的筛选器需要检查哪些foos没有任何条。也就是说,nobar记录将有一个foo\u id匹配我希望显示的foos 对于本例,让我们在room和foos上使用no\u条进行筛选 在scopes(foo.rb)中有类似的内容: 我有一个过滤器部件: <%= dropdown_tag filter_button_name("Room", "room") do %> <li><%= multi_

我有一个页面,使用了多个过滤器,除了一个过滤器,其他一切都正常。不起作用的筛选器需要检查哪些
foos
没有任何
。也就是说,no
bar
记录将有一个
foo\u id
匹配我希望显示的
foos

对于本例,让我们在
room
foos
上使用
no\u条进行筛选

在scopes(
foo.rb
)中有类似的内容:

我有一个过滤器部件:

<%= dropdown_tag filter_button_name("Room", "room") do %>
    <li><%= multi_filter_link "room", "room_1"%></li>
    <li><%= multi_filter_link "room", "room_2" %></li>
<% end %>

<%= dropdown_tag filter_button_name("Filter By", "filter") do %>
    <li><%= multi_filter_link "filter", "not_validated" %></li>
    <li><%= multi_filter_link "filter", "not_located" %></li>
    <li><%= multi_filter_link "filter", "no_bars" %></li>
<% end %>
我想你想要:

scope :no_bars, joins("LEFT JOIN bars ON foos.id = bars.foo_id").where("bars.id IS NULL")

辣妹,我怎么会错过呢。谢谢@user16484。
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (bars.id IS NULL)' at line 1: SELECT `foos.*` FROM `foos` LEFT JOIN bars ON foos.id = bars.foo_id where WHERE (bars.id IS NULL)  
scope :no_bars, joins("LEFT JOIN bars ON foos.id = bars.foo_id where").where("bars.id IS NULL")
scope :no_bars, joins("LEFT JOIN bars ON foos.id = bars.foo_id").where("bars.id IS NULL")