Rails通过外键查询所有对象

时间:2017-02-24 14:27:54

标签: ruby-on-rails

我有两个模型,我的rails应用程序中有表格(电路板和付款)。我想知道哪些董事会有与他们相关的付款。现在我在付款和董事会之间设置了has_one和belongs_to关联设置,其中外键是我的付款表中的board_id。因此,付款属于董事会,董事会已付款。

我希望获得具有与之关联的付款ID的所有董事会对象。我知道我可以通过拨打付款表来获得所有具有董事会ID的付款,然后查询这些董事会,但我想在一个数据库查询中执行此操作。那可能吗?如果是这样,那个查询在rails中会是什么样子?

2 个答案:

答案 0 :(得分:1)

您可以使用子查询解决此问题:

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

或者你可以inner join这两个表:

Board.joins(:payments)

两者都导致一次数据库调用

答案 1 :(得分:0)

内部联接非常简单:

Board.joins(:payment)

仅返回付款关联的单板。

当然,您的has_one :payment课程需要Board