class User < ActiveRecord::Base
  has_many :case_users
  has_many :cases, :through => :case_users
end

class CaseUser < ActiveRecord::Base
  belongs_to :case
  belongs_to :user
end

class Case < ActiveRecord::Base
  has_many :case_users
  has_many :users, :through => :case_users
end


当我尝试命中任何用户或案例端点时,它会不断向数据库发送查询,例如:

SELECT `cases`.* FROM `cases` INNER JOIN `case_users` ON `cases`.`id` = `case_users`.`case_id` WHERE `cases`.`deleted_at` IS NULL AND `case_users`.`deleted_at` IS NULL AND `case_users`.`user_id` = 1  [["user_id", 1]]


像:

SELECT `users`.* FROM `users` INNER JOIN `case_users` ON `users`.`id` = `case_users`.`user_id` WHERE `users`.`deleted_at` IS NULL AND `case_users`.`deleted_at` IS NULL AND `case_users`.`case_id` = 1  [["case_id", 1]]


为什么会这样呢?

编辑:

这些模型实际上更大(80-100行),但是我已经注释掉了一点,并认为这是导致问题/错误的原因。当崩溃时,它也在运行这些查询,这使我相信它来自这种关系。

最佳答案

花了大约1个小时的时间查看了我的模型,数据库模式并进行了全面测试之后,我发现序列化器中存在问题。

我的序列化程序中有has_many :users的情况,这导致了错误。

关于mysql - Rails has_many:through关系导致堆栈级别太深,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29103300/

10-13 02:02