Я хочу отображать небольшой значок для всех групп пользователя под каждым постом в теме (под именем пользователя). Базовая функциональность работает, но я застрял на этапе получения групп пользователя, сделавшего пост. В атрибутах виджета метаданных поста я могу найти некоторые детали о пользователе, но группы там не указаны. Думаю, мне нужно добавить группы в сериализатор поста, но я не уверен, как это сделать.
Привет,
Не эксперт — в плагине вы можете добавить поле 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
Надеюсь, это поможет. ![]()
Этот компонент может быть полезен при создании постов, например, для добавления флейров к постам в процессе их создания?
Второе решение — именно то, что мне нужно, но у меня не получается его запустить. По какой-то причине массив available_flairs вообще не отображается. Правильно ли я предполагаю, что код должен находиться в plugins.rb?
Чтобы отобразить данные в контексте post-meta-data, попробуйте использовать API. Это должно сработать!
api.includePostAttributes("available_flairs");
Это сработало. Спасибо за помощь!
