0
在我的股票投資組合應用程序中,我通過交易對象循環來獲取我的投資組合顯示頁面中的股票信息。在導軌中使用#include,使兩次運行到股票表
<% @portfolio.transactions.each do |trans| %>
<tr>
<td class="col-md-1"><%= trans.stock.symbol %></td>
<td class="col-md-1"><%= number_to_currency(trans.stock.last_price) %></td>
<td class="col-md-1"><%= trans.stock.name %></td>
<td class="col-md-1"><%= trans.stock.stock_exchange %></td>
<td class="col-md-1"><%= trans.num_of_shares %></td>
</tr>
<% end %>
在portfolios_controller我@portfolio對象定義爲
def show
@portfolio = Portfolio.includes(:transactions, :stocks).find(params[:id])
@transaction = Transaction.new
end
我的模型被定義爲
class Transaction < ActiveRecord::Base
belongs_to :portfolio
belongs_to :stock
end
class Stock < ActiveRecord::Base
has_many :transactions
end
class Portfolio < ActiveRecord::Base
belongs_to :user
has_many :transactions
has_many :stocks, through: :transactions
end
我的日誌是這樣的,當我打了一個投資組合顯示頁面:
Started GET "/portfolios/2" for ::1 at 2016-09-24 17:59:13 -0400
Processing by PortfoliosController#show as HTML
Parameters: {"id"=>"2"}
Portfolio Load (0.2ms) SELECT "portfolios".* FROM "portfolios"
WHERE "portfolios"."id" = $1 LIMIT 1 [["id", 2]]
Transaction Load (0.4ms) SELECT "transactions".* FROM "transactions"
WHERE "transactions"."portfolio_id" IN (2)
Stock Load (0.3ms) SELECT "stocks".* FROM "stocks" WHERE
"stocks"."id" IN (3, 1, 14, 9)
Stock Load (0.3ms) SELECT "stocks".* FROM "stocks"
Rendered transactions/_form.html.erb (2.8ms)
Rendered portfolios/show.html.erb within layouts/application (5.5ms)
Rendered application/_nav.html.erb (0.7ms)
Completed 200 OK in 39ms (Views: 33.8ms | ActiveRecord: 1.1ms)
I對於股票負債報表正在做什麼事感到困惑。如果我已經有我需要的庫存對象,爲什麼還有另一次到數據庫的行程。
您的控制器或視圖中是否有任何過濾器可能會觸發它?模型中還有什麼? –
我已經盡我所能地再現了您的應用程序,並且我沒有看到第二個'Stock Load',因此我認爲您的詳細信息中包含此處包含的內容。 –
我想通了。我遺漏了我也有一個交易表格。這是抓取股票對象的下拉列表,並導致第二個電話。 –