2016-02-04 153 views
0

我在索引操作中遇到了.where語句。嵌套資源的Rails .where語句

在我的Deals控制器中,我想列出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 

這裏是我的優惠控制器Index操作:

def index 
     @deals = Deal.all 
    end 

我沒有發現任何方式說:「我只希望看到一個協議,如果這筆交易至少有一個在current_user.bank被添加的遊戲池。

有什麼想法?

非常感謝:)

回答

0

你應該做inner join和查詢中聯接表ID。你可以通過以下方式在Rails中輕鬆完成:

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

非常感謝Marek!它會阻止人們訪問他們未被授予的交易(他們的銀行不在場?)。再次感謝您的幫助! –

+0

是的,它應該。如果你願意,你可以在控制檯上做一些測試。 –

+0

好的很好:)即使他們輸入特定交易的網址? –