我有一张表:有一列的句号:小时
我还有一个表:模拟属于:句点(因此它将period_id作为列)
我加入了2桌
@simulations=Simulation.join(:period) #Controller
现在在我看来,我必须循环我的模拟,但过滤基于"小时"列,存在于期间表上。
所以我尝试过像
这样的事情在我看来,我必须循环模拟:
<% @simulations.where( :period => {:hour => count})each do |sim| %>
或
<% @simulations.periods.where(:hour => count )each do |sim| %>
同样,我想根据周期表中的数据过滤我的模拟。这些方法都不起作用。我也尝试过使用include和eager_loads,这些都不起作用。
我是否尝试过在轨道下无法实现的功能?
我也在使用postgres
答案 0 :(得分:0)
尝试在控制器中使用此查询
@simulations = Simulation.where(periods: {hours: count}) # All simulations that belongs to periods with hours = count
请注意,“期间”中的's'并根据您的列名调整'小时'中的's'。
在视图中,直接使用模拟变量:
<%= @simulations.each do |sim| %>
您正在进行两次加入期间和模拟的相同查询。还要尽量避免在视图或控制器中对Model进行任何查询。相反,您应该在Model中创建一个方法并使用它来从上面的查询中获取结果。