设计可邀请和验证嵌套属性
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
验证(电子邮件地址除外)。我可以邀请具有自动保存的嵌套注册属性的用户。我还没有嵌套验证工作,但我在我的邀请控制器中添加了一个猴子补丁来验证注册参数。
我有一个用户可以邀请其他用户的应用程序,我添加了一个 has_many
模型 Enrollment
具有多个属性的模型。
devise_invitable 模块似乎忽略了验证,所以在我的例子中,如果我的嵌套属性验证失败,它永远不会被捕获,用户仍然会被邀请。
我找到了 validate_on_invite
(默认为 false)设置,它可能有效。但是,我需要向其他 User
属性(名称、地址等)添加条件验证,以便它们不会在邀请过程中触发。
我现在有一个自定义创建控制器的方法,可以添加一些逻辑来检查参数是否存在等。但是,有没有更简单的方法来执行此操作依赖于模型验证?
更新
我尝试将 validate_on_invite
更改为 true 并使嵌套属性和验证正常工作。我现在遇到的问题是,在 User
模型中,您不能(据我所知)根据控制器操作(即具有创建操作的邀请控制器)进行条件验证。
我想我回到了邀请控制器中的一些自定义代码。
我最终偶然发现了 if: :accepted_or_not_invited?
。我将此添加到所有 User
验证(电子邮件地址除外)。我可以邀请具有自动保存的嵌套注册属性的用户。我还没有嵌套验证工作,但我在我的邀请控制器中添加了一个猴子补丁来验证注册参数。