Saving edits on user preferences page with required custom fields is unclear


(Holger Selover-Stephan) #1

I added a “Reason for joining” custom field, and put a checkmark on “Required at signup?”. That works well for those that sign up for an account without an invitation. With an invitation, the account is created and the custom field is left blank. So far not a problem.

But when the user then wants to change his/her profile, that empty custom field blocks saving. It is not easily seen why saving was denied, and the error message is also not pointing to the custom field. Also, there is no need anymore to require that field.

Is there a better solution to require new members to declare a reason for signing up?

Thanks!

Holger


Rebuilding User Preferences
(Jeff Atwood) #2

So the problem is that saving changes on the user page isn’t clear enough about the required field not being filled on the user page?


(Holger Selover-Stephan) #3

Yes, and that the field at that point is of no interest anymore. My forum members are low tech. If it doesn’t save they give up soon.


(Jeff Atwood) #4

It is a legit complaint, let me edit the title and mark this UX


(Holger Selover-Stephan) #5

Thank you, Jeff! Ideally, there’s some better way to ask for a registration reason, but if the error message clearly points to the field in the profile that is empty, I think that would do it. I will probably give all existing members a value, so that they don’t have to fill one in.


(Holger Selover-Stephan) #6

I gave all existing users a value for the custom field:

users = User.where('NOT EXISTS(
                     SELECT 1
                     FROM user_custom_fields ucf
                     WHERE
                       ucf.user_id = users.id AND
                       ucf.name = ?
                  )', 'user_field_1')

users.each do |u|
  u.custom_fields['user_field_1'] = 'invited'
  u.save!
end

(Christoph) #7

I have another version of the issue described in the OP. I have a consent clause to which new users have must agree (tick the box) at sign-up. The custom user field is configured so that it cannot be edited afterwards, but since it is nevertheless displayed on the user preferences, users can still attempt to change it. But when they try to save the preferences they are told “You have not completed all the user fields”, which is confusing for several reasons:

  • they don’t know what “user fields” are
  • there is no indication as to which user field is missing
  • since it is a tick box, there is nothing to “fill in”
  • the real problem is not that they have not filled in everything, but that they have withdrawn their consent by unticking the check-box

I will work-around this by hiding that user field via CSS, but the UX regarding user fields can definitely be improved.


(Neil Lalonde) #8

This is something I’m trying to solve now. I’m breaking up the preferences into tabs. Then we can set preferences within each tab separately, and in the tab where there’s a custom field that needs to be set it should be easier to spot it.


(Arpit Jalan) #9

This will not be an issue anymore as per:

Demo: