gpt4 book ai didi

mysql - 使用 mysql 和 rails 3 从 2 个表返回记录

转载 作者:可可西里 更新时间:2023-11-01 08:08:00 26 4
gpt4 key购买 nike

需要这方面的帮助:
@follows = Follow.where("admin_user_id = ?", session[:id])
这将返回 Follow 表中的记录,该表具有以下列:admin_user_id、assignment_id。我现在想这样做:

@assignments = Assignment.where("id = ?", @follows.assignment_id)

Assignment 表包含以下列,:id, :name。我已经尝试使用“@follows.assignment_id”来替换每个 id,然后我可以在 View 中使用它,例如,

<% @assignment.each do |assignment| %>
<%= assignment.name %>
<% end %>

预先感谢您的帮助

最佳答案

这里的部分问题是您的第一个查询:Follow.where(...) 返回一个范围,它不会执行查询,直到您尝试访问 @follows 对象。这可能没什么大不了的,但您应该这样做(除非您要动态添加更多条件):

@follows = Follow.where("admin_user_id = ?", session[:id]).all

这确保@follows 是一个Follow 对象数组。因为它是一个数组(而不是单个 Follow)所以它上面没有 assignment_id。将您的第二个查询更改为:

@assignments = Assignment.where(:id => @follows.map{|f| f.assignment_id}).all

基本上,.map 返回一个 block 的返回值数组,而不是调用它的原始对象,这意味着它返回一个赋值 id 数组,而不是后面的数组每个对象。当您将此数组作为条件传递时,它会生成类似于以下内容的 SQL 查询:

select * from assignments where id IN (1, 2, 3)

如果您的关注者的任务 ID 为 1、2 和 3。

关于mysql - 使用 mysql 和 rails 3 从 2 个表返回记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5397046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com