我在rails 3.2应用程序中有以下4个资源。
现在,我的应用程序的一部分必须像这样工作,
RegisterGarage存储了一些供管理员使用的其他信息。
现在我要完成的是,当SuperAdmin创建GarageAdmin时,与GarageAdmin对应的Garage也将仅通过该RegisterGarage资源同时创建。
我在RegisterGarage资源中调用了两个回调:
before_create :pass
。这将为GarageAdmin before_save :garage
。这将为刚刚创建的GarageAdmin创建一个新的Garage,并为其指定一个名称。直到现在,如果删除before_save :garage
,我就可以创建GarageAdmin。但是当我在RegisterGarage中使用SystemStackError: stack level too deep
时,我收到错误before_save :garage
。
如果我以正确的方式做到这一点,任何人都可以指导我,并指导我如何实现它。
我正在使用mongoid。
答案 0 :(得分:1)
关联名称为garage
,您的回调也命名为garage
。这意味着(假设回调在关联后在模型中列出),每次尝试引用garage
关联时,实际上都在调用回调方法 - 这可能是导致错误的原因。
尝试将回调更改为不同(更具描述性)的内容,例如init_password
,init_garage
。此外,如果只应在首次创建GarageAdmin时创建新的Garage,则应该是before_create
回调,而不是before_save
。否则,每次更新GarageAdmin时都会创建一个新的Garage。