Я запускаю приложение Rails на Postgres через Heroku.
Я бы хотел добавить подобные «лайки» Facebook на мой сайт для различных элементов, таких как комментарии пользователей. Какой самый умный способ сохранить их в моей базе данных, который будет эффективным и быстрым?
Очевидный вариант - просто иметь похожую таблицу соединения между пользователями и элементами, что-то вроде этого:
user_id int
item_id int
item_type string
created_at datettime
Однако при отображении это будет означать, что каждый раз, когда я вытягиваю предмет, мне приходится тянуть объединение по всей единой таблице, которая может стать очень большой.
Очевидным ответом на это было бы сохранение счетчика в предметах, для их текущего счета. Однако это не сработает, потому что понравившийся элемент имеет значение как для отображения рядом с элементом, так и для скрытия кнопки «Нравится» для того, что пользователю уже понравилось.
Мой план состоит в том, чтобы добавить ко всем симпатичным элементам текстовое поле, в котором я буду хранить сериализованный массив. Таким образом, каждое нажатие предмета будет сопровождаться полным списком тех, кому он понравился. Есть ли лучший способ сделать это, или это рекомендуемый подход?