尝试显示项目列表。我有物品和校准。我希望从校准中显示来自项目+ date_cal_expired的所有数据(选择最大日期,因为一个项目可以有很多校准)。
在控制器中
@items = Item.includes(:calibrations).where('calibrations.date_cal_expired <= ?' , now)
在索引中
<% @items.each do |item| %>
<tr>
<td><%= item.den_cont %></td>
<td><%= item.marca %></td>
<td><%= item.modelo %></td>
<td><%= item.nro_serie %></td>
<td><%= item.genre.genre %></td>
<td><%= item.state.state %></td>
我应该怎么做才能显示date_cal_expired?
我不知道如何显示其他表中的数据
希望你能理解。 TKS!
答案 0 :(得分:0)
item.calibrations.pluck(:date_cal_expired).max
答案 1 :(得分:0)
您已使用
显示其他表格中的数据<td><%= item.genre.genre %></td> // this way you go to table genre and display field genre
如果你想要其他表中的数据,你应该放
<td>
<% item.calibrations.each do |calibration| %>
<%= calibration.field_1 %>
// ....
<%= calibration.field_n %>
<% end %>
</td>
答案 2 :(得分:0)
item.calibrations.max(&#34;你的价值&#34;)
答案 3 :(得分:0)
如果您想执行单个查询:
Item.select("items.*, c.date_cal_expired AS date_cal_expired")
.joins("LEFT JOIN calibrations AS c ON c.item_id = item.id
WHERE NOT EXISTS(SELECT 1 FROM calibrations AS j
WHERE c.item_id = j.item.id
AND t.date_cal_expired < j.date_cal_expired)")
现在date_cal_expired
是项目的属性:
<% item.date_cal_expired %>
或简单的解决方案:
<% item.calibrations.map(&:date_cal_expired).try(:max) %>