Как сделать правильную ассоциацию для лайков?

Здравствуйте.
Делаю систему рейтинга на сайте и встал насущный вопрос, как собственно её нормально воплотить.

Дано:
User может лайкнуть комментарий, пост, и т.п.,

Как примерно выглядят модели,
User
has_many :likes
has_many :comments, through: :likes

Like
belongs_to :user
belongs_to :comment

Comment
has_many :likes


И все нормально работает, но есть одно "но". Если начать расширять функциональность лайков, например сделать возможность лакать посты, то получается запись likes будет выглядеть примерно так:

Likes.new(comment_id: nil, post_id: 1, user_id: 1)

Проблема в том, что если лайкнуть пост, то будет создана запись с пустым полем comment_id, лайкаем комментарий, создается запись без post_id. Мне то не жалко, пусть создается, но что то внутри протестует против такого беспорядка :)

Вот как избежать создания пустых записей в таблице? Какое есть лучшее решение такой проблемы?
  • Вопрос задан
  • 296 просмотров
Решения вопроса 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы