Найти все группы автора в теме

Я хочу отображать небольшой значок для всех групп пользователя под каждым постом в теме (под именем пользователя). Базовая функциональность работает, но я застрял на этапе получения групп пользователя, сделавшего пост. В атрибутах виджета метаданных поста я могу найти некоторые детали о пользователе, но группы там не указаны. Думаю, мне нужно добавить группы в сериализатор поста, но я не уверен, как это сделать.

Привет,

Не эксперт — в плагине вы можете добавить поле groups в сериализатор поста, примерно так:

add_to_serializer(
    :post,
    :groups
) { object.user&.groups }

Однако имейте в виду, что в текущем виде любой может увидеть, в какой группе находится человек.
Тем не менее, я полагаю, что если вы используете флейр, название группы будет видно всем, независимо от настроек прав доступа.

Также можно добавить новое поле available_flairs, чтобы возвращать только необходимые данные о флейрах групп:

add_to_serializer(:post, :available_flairs) do
  flairs = Array(object.user&.groups&.map do |group|
    next unless group.flair_url
    {
      id: group.id,
      name: group.name,
      url: group.flair_url,
      bgColor: group.flair_bg_color,
      color: group.flair_color
    }
  end).compact

  flairs
end

Надеюсь, это поможет. :+1:

Этот компонент может быть полезен при создании постов, например, для добавления флейров к постам в процессе их создания?

Второе решение — именно то, что мне нужно, но у меня не получается его запустить. По какой-то причине массив available_flairs вообще не отображается. Правильно ли я предполагаю, что код должен находиться в plugins.rb?

Чтобы отобразить данные в контексте post-meta-data, попробуйте использовать API. Это должно сработать!

api.includePostAttributes("available_flairs");

Это сработало. Спасибо за помощь!