Новое в разработке Rails. Я создаю приложение, в котором пользователи, художники и теги связаны с художниками, примененными пользователями. Вот две модели для художников и теги:
class Artist < ApplicationRecord
has_and_belongs_to_many :tags
end
class Tag < ApplicationRecord
has_and_belongs_to_many :artists
end
Пользователь имеет возможность либо создать новый тег, в этом случае мы создаем запись тега в таблице тегов и запись ассоциации между вновь созданным тегом и исполнителем, для которого он был создан. Второй вариант - щелчок по существующему тегу для этого исполнителя, в этом случае я хотел бы увеличить количество в таблице сопоставлений для этого тега для этого исполнителя, но Active Record не индексирует таблицы соединений, поэтому при создании можно добавить счетчик. столбец в таблицу соединений, я не могу получить доступ и изменить этот столбец. Но я могу сделать это в SQL:
UPDATE Artists_Tags
SET count = count + 1
WHERE artist_id=artistid AND tag_id=tagid;
Таблица в schema.rb:
create_table "artists_tags", id: false, force: :cascade do |t|
t.bigint "artist_id", null: false
t.bigint "tag_id", null: false
t.integer "count", default: 1, null: false
t.index ["artist_id", "tag_id"], name:
"index_artists_tags_on_artist_id_and_tag_id"
end
Но я не могу поместить этот SQL-запрос в метод контроллера для обновления счетчика. Я неправильно подхожу к этой проблеме? Буду признателен за любые советы.
Примечание. Увеличение счетчика используется для отображения наиболее примененного тега для этого исполнителя.