2017-02-24 58 views
0

我有兩個模型在我的Rails應用程序(板和支付)中有表格。我想知道哪些董事會有與他們相關的付款。現在我在支付表和電子支付表中有一個has_one和belongs_to關聯設置,其中外鍵是board_id。所以付款屬於董事會和董事會有一個付款。Rails通過外鍵查詢所有對象

我想獲得所有與它們關聯的付款ID的董事會對象。我知道我可以通過撥打付款表來獲得所有具有電路板ID的支付,然後查詢這些電路板,但我想在一個數據庫查詢中執行此操作。那可能嗎?如果是的話,那個查詢在rails中是什麼樣的?

+0

如果有關聯,董事會對象沒有與他們關聯的付款ID如何? – Sinstein

+0

在rails中,它取決於關聯是如何設置的。現在我在支付表中有一個board_id,但是在board tabl @Sinstein – adamscott

+0

中沒有payment_id,第一段很容易用代碼解釋,只有文本很難直觀。請參閱http://stackoverflow.com/questions/20543490/rails-4-left-join-getting-values-of-joined-model –

回答

1

你既可以使用子查詢解決這個問題:

Board.where(id: Payment.select(:board_id).where.not(board_id: nil)) 

或者你可以inner join兩個表:

Board.joins(:payments) 

兩個導致一個DB調用

+0

非常感謝您的幫助。 – adamscott

+0

我剛剛在類似領域發佈了第二個問題,如果你有任何見解http://stackoverflow.com/q/42455547/6162752 – adamscott

0

它很容易與內加入:

Board.joins(:payment) 

僅返回與付款關聯的主板。

當然你需要has_one :payment在你的Board類。

+0

他說他有這樣的設置:「現在我有一個has_one和belongs_to關聯」 –