Add a custom per-user setting in a plugin

Я тестирую это здесь

и сборка проходит успешно. Не уверен насчёт функциональности, так как я никогда не использовал этот плагин и не знаю, что именно тестировать.

Сигнатура метода register_editable_user_custom_field принимает имя поля и необязательный флаг для пометки его как staff_only, поэтому, насколько я могу судить, передача в него массива является неожиданным действием?

3 лайка

Да, это необычно?

Но, похоже, решение Дэвида решает проблему.

Это:

  register_editable_user_custom_field :geo_location if defined? register_editable_user_custom_field
  register_editable_user_custom_field geo_location: {} if defined? register_editable_user_custom_field

ломается. А это — нет:

 register_editable_user_custom_field [:geo_location,  geo_location: {}] if defined? register_editable_user_custom_field

Похоже, что Ruby-версия вынудила это изменение?

В любом случае, я считаю, что у нас есть решение, и мы должны обновить оригинальный пост?

Мне нужно внести изменение в ещё один плагин, и если всё будет хорошо, я обновлю вики выше.

2 лайка

К сведению: похоже, что всё работает — и сборка, и функционирование :tada:

Спасибо за вашу помощь.

2 лайка

Я думаю, что дело в этом: Separation of positional and keyword arguments in Ruby 3.0 | Ruby

5 лайков

Привет :wave:

Я пытаюсь создать пользовательское поле через плагин, но не совсем уверен, что вы имеете в виду. Если в моём плагине я делаю:

register_editable_user_custom_field 'foo'

нужно ли мне всё ещё использовать коннекторы плагинов (plugin outlets), чтобы отобразить это поле на странице профиля пользователя и на карточке пользователя?

Или существует механизм, аналогичный пользовательским полям в админке, который может добавить его автоматически (включая каталог пользователей)? Я хотел бы избежать добавления коннекторов и полей сериализатора, если уже есть способ сделать это.

Спасибо за помощь!

1 лайк

Вот:

1 лайк

Привет @merefield, спасибо за ссылку, но это не то, что я ищу. Похоже, речь идет о том, чтобы сделать пользовательские поля, созданные в админке, невидимыми, за исключением случаев использования API-ключа для персонала.

Если я выразился неясно, позвольте переформулировать: есть ли способ зарегистрировать пользовательское поле через плагин, точно так же, как это можно сделать в разделе «Поля пользователей» админки (редактируемое, поисковое, отображаемое на странице профиля пользователя, на карточке пользователя и т.д.)?

2 лайка

Извините, возможно, это будет полезнее:

У всех основных моделей есть возможность добавления пользовательских полей.

2 лайка