Ajuda para construir plugin que requer sobrescrita de métodos de controller ruby

Olá,\n\nEstou tentando criar um plugin que exiba uma caixa de seleção ao criar um tópico na interface do usuário e que salve um novo atributo na tabela de tópicos. Basicamente, preciso que o atributo seja salvo, quer a caixa de seleção tenha sido marcada ou não, e depois que o novo atributo seja exibido ao visitar uma página de Tópicos.\nComecei pelo backend, adicionando uma migração que cria um novo atributo booleano para Tópicos, com valor padrão falso, e em seguida trabalhei no controller. Mas não consegui encontrar uma maneira de adicionar o novo atributo na função posts do TopicsController.\nNão encontrei nada parecido nos tutoriais.\nObrigado antecipadamente!\n\n\n\nafter_initialize do\n\n module ::DiscourseXPlugin\n class ::TopicsController\n\n def posts\n Rails.logger.info '┌────────────┐'\n Rails.logger.info '│ Aqui vamos nós │'\n Rails.logger.info '└────────────┘' \n end\n end\n end\nend\n

1 curtida

Uma alternativa a isso seria criar um novo método no controller, como “posts_with_new_attribute”, que é acionado por meio de um novo endpoint se a caixa de seleção for clicada, mas não tenho certeza se isso seria mais complicado.

1 curtida

Você precisará fazer isso com um outlet de plugin no front-end do Ember.

Você vai querer usar um TopicCustomField, não alterar nenhuma tabela.

Você vai querer adicionar o campo personalizado ao serializador de tópicos.

Você pode olhar outros plugins que fazem essas coisas para alguns exemplos.

1 curtida

Isso funcionou! Obrigado!!