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 有很多 :through relationship causing stack level too deep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103300/