带有嵌套资源的Rails .where语句

时间:2016-02-04 19:02:11

标签: ruby-on-rails ruby

我在索引操作中遇到了.where语句。

在我的交易控制器中,我想列出current_user银行参与的所有交易。

以下是我的模特:

class User < ActiveRecord::Base
    belongs_to :bank
end
class Deal < ActiveRecord::Base
    has_many :pools
end
class Pool < ActiveRecord::Base
    belongs_to :deal
    has_many :participating_banks, dependent: :destroy
    has_many :banks, through: :participating_banks
end
class ParticipatingBank < ActiveRecord::Base
  belongs_to :pool
  belongs_to :bank
end

这是我的交易控制器索引操作:

def index
        @deals = Deal.all
    end

我没有找到任何方式说:'如果这笔交易至少有一个加入了current_user.bank的池,我只想看一笔交易'。

有什么想法吗?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

您应该inner join并查询已连接的表格以获取ID。您可以通过以下方式在Rails中轻松完成:

def index
  @deals = Deal.joins(pools: :banks).where(banks: { id: current_user.bank_id })
end