Ruby ActiveRecord has_many 未 运行 加入

Ruby ActiveRecord has_many not running Join

我在 Ruby 上的 Rails 项目中有一个简单的一对多关系 我正在使用 2.6.6 和 rails 6.0.3

Ruby V => 2.6.6
Rails V => 6.0.3

class Resource < ApplicationRecord
    belongs_to :project, :class_name => 'Project', :foreign_key => 'project_id'
  end

class Project < ApplicationRecord
  has_many :resources, class_name: 'Resource'

end

然而当我运行

Projects.all 

生成的 SQL 不执行加入,因此我没有任何项目的资源。数据库中有数据且外键设置正确

irb(main):001:0> Project.all
SQL (0.9ms)  USE [Portfolio]
Project Load (3.3ms)  EXEC sp_executesql N'SELECT [projects].* FROM [projects] ORDER BY [projects].[id] ASC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY', N'@0 int', @0 = 11  [["LIMIT", nil]]

我是 Ruby 的新手,不明白为什么这个简单的 ORM 函数不起作用。 我可以使用“加入”将其获取到 return 子数据,但这样做我必须对结果进行分组,而在教程中的另一个测试项目集中,这按预期工作

Project.all selects 来自 projects table.

的所有记录

如果要使用关系,则必须遍历记录或 select 一个记录。但是,它不会像您所说的那样执行连接,而是 运行 两个单独的 SQL 语句。

projects = Project.all
projects.each do |project|
  project.resources
end

# or something like
project = Project.find(1) #by id = 1
project.resources

The Rails guides这个上手还不错


PS::class_name => 'Project', :foreign_key => 'project_id'部分可以跳过,因为它们都是Rails使用的默认值。 class_name: 'Resource'

也是如此