在Rails中联接两个表数据

时间:2019-01-23 06:51:41

标签: ruby-on-rails

下面的代码显示DataModel表(数据库)中的parametersname。我还有一个表dataModelDevices,其中有parameter_name列。我也想在UI的同一行中显示parameter_name。如何在Rails中再加入一张桌子? 我已经尝试过下面的代码,但不能正常工作。

 <% DataModel.preload(:devices,:revision).where(device: true).where("parametersname NOT LIKE '%.'").where("parametersname LIKE '%{i}%'").order(:id).each do |parameter| %>
            <tr onclick="javascript:showRowDeviceTest(this);">

           <% DataModelDevices.all.each do |parameterhard| %>
                  <td style="word-break:break-all;">
                <%= parameter.parametersname%>

                    <%= parameterhard.parameter_name%>
                  </td>
              <% end %>
            <% end %>

实际工作代码

            <% DataModel.preload(:devices,:revision).where(device: true).where("parametersname NOT LIKE '%.'").where("parametersname LIKE '%{i}%'").order(:id).each do |parameter| %>
                <tr onclick="javascript:showRowDeviceTest(this);">

                  <td style="word-break:break-all;">
                    <%= parameter.parametersname%>
                  </td>

                  </tr>
                <% end %>

1 个答案:

答案 0 :(得分:0)

您应该在DataModel中的模型中添加关联:

has_many :data_model_devices

在DataModelDevice中: belongs_to :data_model

您可以根据需要加入以下代码:

DataModel.joins(:data_model_devices).
select('data_model_devices.parameter_name, data_models.*').load