Вы можете сделать это с помощью простого плагина.
Что нужно сделать
Плагин должен выполнять следующие действия:
-
Добавить пользовательское поле
known_tags(список строк). -
Добавить интерфейс в профиле пользователя, где можно редактировать
known_tags. Не думаю, что необходимо создавать отдельную вкладку профиля для этого, но вы можете сделать это, если захотите. Если вы не хотите, чтобы пользователи редактировали это сами, просто сделайте поле доступным для редактирования только администраторами и обновляйте его в профилях пользователей на основе вашего CSV-файла. -
Добавить обработчик событий, который использует события
before_create_postилиpost_createdвPostCreator, чтобы добавлять нужный контент в пост на основе тегов темы.
Как это сделать
Части 1 и 2 очень похожи на примеры плагинов для других моделей в теме, ссылка на которую приведена ниже. Попробуйте разобраться по аналогии. Если вы совсем застрянете, спросите меня, и я подскажу.
Часть 3 также будет находиться в вашем файле plugin.rb. Она будет выглядеть примерно так:
on(:post_created) |post, opts, user|
if post.is_first_post? && post.topic.tags.present?
user_ids = UserCustomField.where(name: 'known_tags', value: post.topic.tags).pluck(:user_id)
usernames = User.where(id: user_ids).pluck(:username)
new_raw = post.raw + "something something #{usernames}"
PostRevisor.new(post).revise!(
user,
{
raw: new_raw,
edit_reason: "some reason"
},
skip_validations: true,
bypass_bump: true
)
end
end
Попробуйте сделать это самостоятельно. Если вы совсем застрянете, я помогу. Я всегда охотнее помогаю, если вижу, что вы пытаетесь разобраться сами ![]()