Encontrei o console do Rails e descobri que você pode fazer mágica negra como:\n\n```
DB.exec(<<~SQL)
UPDATE topics
SET title = ‘psql redo!’
WHERE id = 886
SQL
Como descubro quais comandos/funções podem ser executados no console? Como aprendo mais sobre essa bruxaria?\n\nNota: se ainda não ficou óbvio, não sei nada sobre Ruby ou Rails.
Você realmente precisa aprender sobre Rails e não modificar diretamente esse banco de dados. O que eu fiz foi encontrar um livro sobre Rails e lê-lo. E em algum momento também olhei um livro de Ruby. Sou velho o suficiente para lembrar quando livros eram a única maneira de aprender sobre computadores. Pelo que entendi, existem muitos sites na internet que podem te dar um tutorial de Rails. Acho que existe uma maneira de pesquisar na internet para encontrá-los.
Aqui está um que encontrei
Veja como atualizar coisas com Rails, mas ler um desses guias rapidamente te dará uma ideia de como funciona.
t=Topic.find(123)
t.title='meu novo título'
t.save
# ou
t.update(title: 'meu novo título')
Quando você faz coisas através do Rails, ele faz um monte de verificações, se as coisas. Essas coisas geralmente te impedirão de cometer grandes erros. Provavelmente, você não deve quebrar essas regras até entendê-las.
Por exemplo, se você quer que os usuários criem tópicos em uma determinada categoria via API, então eles precisam ter direitos para criar um tópico nessa categoria. Se você realmente quer que um tópico criado por um usuário exista em uma categoria para a qual ele não tem direitos, então crie-o em outra categoria e peça a um administrador para movê-lo (ou faça isso via Rails, que não imporá permissões de categoria).
Embora isso possa facilmente causar uma exceção (que você é aconselhado a resgatar), então você pode querer usar find_by como uma alternativa que retornará nil em vez de levantar uma exceção, dependendo de como você deseja gerenciar as coisas.
É assim que somos iguais. Eu precisava fazer um sql com um inner join complicado e outro com um union simples que pedi ajuda à IA. Eu me arrependi de não ter prestado um pouco mais de atenção na minha aula de banco de dados em 1986, eu saberia como fazer.
Por que não pedir à IA para escrever comandos do rails para você?
Para consultas padrão de seleção, onde, ordenação e limite, eu mesmo escrevo, mas para qualquer coisa mais complicada, agora pergunto à IA. Eu perguntei à IA:
“escreva uma consulta que mostre uma categoria e, em seguida, liste os 5 principais iniciadores de tópicos para essa categoria e o número de tópicos que eles iniciaram”
E imediatamente ela retornou (este é um banco de dados não-discourse):
WITH TopTopicStarters AS (
SELECT
c.id AS category_id,
c.name AS category_name,
u.name AS user_name,
COUNT(t.id) AS num_topics_started,
ROW_NUMBER() OVER(PARTITION BY c.id ORDER BY COUNT(t.id) DESC) AS rank
FROM topics t
JOIN categories c ON t.category_id = c.id
JOIN users u ON t.user_id = u.userid
GROUP BY c.id, u.name
)
SELECT
c.category_name,
tts.user_name,
tts.num_topics_started
FROM categories c
JOIN TopTopicStarters tts ON c.id = tts.category_id
WHERE tts.rank <= 5;
Não há como eu ter chegado a isso sem muita pesquisa no Google e tentativa e erro!