mysql - Rails 有很多 :through relationship causing stack level too deep

标签 mysql ruby-on-rails activerecord

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/

相关文章:

php - 简单更新/编辑数据不适用于 PHP/MySql

PHP MYSQL 选择查询从列中删除空格

ruby-on-rails - 当显示所有类别+属于当前类别的所有帖子时,哪个 Controller 应该处理请求

jquery - Zurb 基金会正在让我的 Assets 加载两次

ruby-on-rails - 我应该在删除操作 : user. delete 或 user.destroy 中使用哪个?

php - 参数数组MySQLi的动态绑定(bind)

php - 在php中对来自mysql的单独计算结果进行排序

ruby-on-rails - 如何避免在简单的登陆注册表单中被其他人覆盖 hstore 记录?

ruby-on-rails - Rails 模型的自定义关联

mysql - 获取表不存在错误,但表确实存在(ActiveRecord::StatementInvalid Mysql2::Error: Table doesn't exist)