2017-02-20 59 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