设计可邀请和验证嵌套属性

Devise invitable and validating nested attributes

我有一个用户可以邀请其他用户的应用程序,我添加了一个 has_many 模型 Enrollment 具有多个属性的模型。

devise_invitable 模块似乎忽略了验证,所以在我的例子中,如果我的嵌套属性验证失败,它永远不会被捕获,用户仍然会被邀请。

我找到了 validate_on_invite(默认为 false)设置,它可能有效。但是,我需要向其他 User 属性(名称、地址等)添加条件验证,以便它们不会在邀请过程中触发。

我现在有一个自定义创建控制器的方法,可以添加一些逻辑来检查参数是否存在等。但是,有没有更简单的方法来执行此操作依赖于模型验证?

更新

我尝试将 validate_on_invite 更改为 true 并使嵌套属性和验证正常工作。我现在遇到的问题是,在 User 模型中,您不能(据我所知)根据控制器操作(即具有创建操作的邀请控制器)进行条件验证。

我想我回到了邀请控制器中的一些自定义代码。

我最终偶然发现了 if: :accepted_or_not_invited?。我将此添加到所有 User 验证(电子邮件地址除外)。我可以邀请具有自动保存的嵌套注册属性的用户。我还没有嵌套验证工作,但我在我的邀请控制器中添加了一个猴子补丁来验证注册参数。