B ПРАВОЕ СОЕДИНЕНИЕ A такое же, как A LEFT JOIN B
B ПРАВОЕ СОЕДИНЕНИЕ A гласит: B ON RIGHT, THEN JOINS A. означает, что A находится в левой части набора данных. точно так же, как A LEFT JOIN B
Нет производительности, которую можно получить, если вы измените LEFT JOINs на RIGHT.
Единственные причины, по которым я могу подумать, почему use RIGHT JOIN - это если вы тип человека, который любит думать изнутри (выберите * from detail right join header).
Другим является то, что у вас уже есть обширный запрос, в котором вы хотите добавить еще один стол, когда это боль в шее, чтобы переупорядочить запрос, поэтому просто подключите таблицу к существующему запросу, используя ПРАВИЛЬНЫЙ JOIN.
ваш params missiong topic_ids вы можете добавить его, как пример кода ниже
def user_params
params.require(:user).permit(
:name, :email, :password,
:password_confirmation, topic_ids: [])
end
Редактировать:
Я думаю, ваш контроллер обновлений уже верен, другую альтернативу для пользователя, чтобы выбрать тему вы можете используйте collection_select
<%= f.collection_select :topic_ids, Topic.all.sample(50), :id, :topic_name, {}, { multiple: true } %>