0

我的 rails 3.2 应用程序中有 4 个资源,如下所示。

  • 车库管理员
  • 超级管理员
  • 车库
  • 注册车库

现在我的应用程序的一部分必须像这样工作,

  • SuperAdmin 可以通过资源 RegisterGarage 创建 GarageAdmin。
  • GarageAdmin has_one Garage 和 Garage belongs_to GarageAdmin。
  • RegisterGarage 存储一些其他信息供管理员使用。

    现在我想要完成的是,当 SuperAdmin 创建一个 GarageAdmin 时,与该 GarageAdmin 对应的 Garage 也将仅通过该 RegisterGarage 资源同时创建。

我在 RegisterGarage 资源中调用了两个回调:

  • before_create :pass. 这将为 GarageAdmin 生成一个随机密码
  • before_save :garage. 这将为刚刚创建的 GarageAdmin 创建一个新的 Garage 并为其分配一个名称。

到现在为止,如果我删除before_save :garage. 但是在 RegisterGarage 中SystemStackError: stack level too deep使用时出现错误。before_save :garage

如果我以正确的方式做事,任何人都可以指导我,并指导我如何实施。

我正在使用mongoid。

4

1 回答 1

1

关联名称是garage,并且您的回调也被命名为garage。这意味着(假设回调在关联之后在您的模型中列出)每次您尝试引用garage关联时,您实际上是在调用回调方法 - 这可能是错误的原因。

尝试将您的回调更改为不同的(并且更具描述性),例如init_password, init_garage。此外,如果只应在首次创建 GarageAdmin 时创建新车库,则它应该是before_create回调,而不是before_save. 否则,每次更新 GarageAdmin 时都会创建一个新的 Garage。

于 2013-02-22T16:34:32.057 回答