Reputation: 3032
I have an app where users can invite other users, and I have added a has_many
model Enrollment
model that has several attributes.
The devise_invitable module seems to ignore validations, so in my case, if my nested attributes fail validation, it is never caught, and the user still gets invited.
I found the validate_on_invite
(defaults to false) setting, which may work. But then, I would need to add conditional validations to the other User
attributes (name, address, etc.) so that they do not trigger during the invitation process.
I have a custom create controller method right now, and can add some logic to check the presence of parameters, etc. However, is there an easier way to do this that relies on the model validations?
UPDATE
I tried changing validate_on_invite
to true and got nested attributes and validations working. The problem I have now is that in the User
model you can't (as far as I can tell) do a conditional validation based on the controller action (i.e. the invitations controller with the create action).
I think I am back to some custom code in the invitations controller.
Upvotes: 0
Views: 665
Reputation: 3032
I ended up stumbling upon if: :accepted_or_not_invited?
. I added this to all the User
validations (other than email address). I can invite users with nested enrollment attributes that are automatically saved. I don't have the nested validations working yet but for not I added a monkey patch in my invitations controller to validate the enrollment params.
Upvotes: 1