使用mysql和rails从2个表返回记录
作者:互联网
在这方面需要帮助:
@follows = Follow.where(“ admin_user_id =?”,session [:id])
这将从“跟随”表返回记录,该记录具有以下列:: admin_user_id,:assignment_id.我现在想这样做:
@assignments = Assignment.where("id = ?", @follows.assignment_id)
分配表具有以下列::id和:name.我尝试使用“ @ follows.assignment_id”替换每个ID,然后我可以在视图中使用这些ID,
<% @assignment.each do |assignment| %>
<%= assignment.name %>
<% end %>
在此先感谢您的帮助
解决方法:
问题的一部分是您的第一个查询:Follow.where(…)返回范围,直到您尝试访问@follows对象,它才执行查询.这可能没什么大不了的,但是您应该做到这一点(除非您要动态添加更多条件):
@follows = Follow.where("admin_user_id = ?", session[:id]).all
这样可以确保@follows是Follow对象的数组.因为它是一个数组(而不是单个“跟随”),所以上面没有assignment_id.将第二个查询更改为此:
@assignments = Assignment.where(:id => @follows.map{|f| f.assignment_id}).all
基本上,.map返回该块的返回值的数组,而不是调用它的原始对象,这意味着它返回每个对象的分配ID的数组,而不是跟随的数组.当您将此数组作为条件传递时,它将生成类似以下内容的SQL查询:
select * from assignments where id IN (1, 2, 3)
如果您的追随者具有分配ID 1、2和3.
标签:ruby-on-rails-3,ruby-on-rails,mysql 来源: https://codeday.me/bug/20191102/1994164.html