2017-02-20 53 views
0

我有一个连接表从其他2个表创建的。打印究竟是不是在连接表

说一个模式被称为猫,另一个叫请求,连接表被称为catrequest(此表将具有CAT_ID和REQUEST_ID)

我将如何打印所有连接表中不相交的猫即所有的猫都不需要使用导轨。我看到一些基于数据库的答案,但我正在寻找使用ruby代码的rails解决方案。

我得到如何打印属于一个请求,即猫:

<% @requests.each do |request| %> 
    <% request.cats.each do |cat| %> 
    <%= cat.name %> 
<% end %> 

,但我不明白怎么做的这个相反。

回答

4

为了得到从未有过的请你一起去的猫的列表:

Cat.includes(:cat_requests).where(cat_requests: { id: nil }) 
# or, if `cat_requests` table does not have primary key (id): 
Cat.includes(:cat_requests).where(cat_requests: { cat_id: nil }) 

上述假设你有相应的关联:

class Cat 
    has_many :cat_requests 
end 
+0

的OP提到,他的工作有一个连接表,除了猫,请求表。这会继续吗? – jaydel

+0

@jaydel是的,它会:) –

+0

这个解决方案也应实行* *外视图 – whodini9

2

这听起来像你需要什么是一个外连接,然后精简没有相应数据请求的猫行?如果是这种情况,你可以考虑使用Arel。它支持外连接,可能可以用来获取你要找的东西。这里是一个链接,有很多有用的信息,阿雷尔指南:

http://jpospisil.com/2014/06/16/the-definitive-guide-to-arel-the-sql-manager-for-ruby.html

搜索页面“越多越好”部分是其中加入了讨论。

+1

,而我觉得我的回答仍然是有效的,下面安德烈的回答是迄今为止最好的一个。 – jaydel