数据库
首页 > 数据库> > 使用mysql和rails从2个表返回记录

使用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