Я немного медлителен в программировании, но мне это нравится, и я стараюсь учиться как можно больше.Поэтому заранее извиняюсь, если я не достаточно ясно со своим вопросом.
У меня есть приложение, предназначенное исключительно для диджеев для просмотра песен и обзоров песен для группировки по штатам.5 полей:На 3 вопроса, на которые даны ответы в масштабе от 1 до 5, форма собирает 3 ответа, а также состояние пользователя и идентификатор песни.В большинстве случаев база данных просто находит состояние и идентификатор песни, а затем добавляет новые данные в 3 поля вопроса (djlike, thinkclublike, жгут).Но первый отзыв на песню от пользователя в новом состоянии должен будет создать новую запись.
Итак, еще раз, чтобы быть кристально чистым, когда пользователь из «Нью-Йорка» рецензирует (песню) «123», он создаст новую запись с идентификатором песни, названием штата и добавит рецензию.значения в 3 столбца stdjlike, stthinkclublike и stplait.Следующий пользователь, другой пользователь из Нью-Йорка, для песни «123» создает обзор, он просто обновляет запись, добавляя значения stdjlike, stthinkclublike и stplait к предыдущему отзыву.
Я искал вокругвсю неделю и найти множество хороших решений для похожих, но не одинаковых проблем ( Хорошо документированное решение здесь ).Я решил пойти с приращением, потому что я обновляю значения, которые не являются фиксированными числами, я пытался, но я просто не могу заставить его работать.
Я начал с того, что работает.Создание в контроллере состояния обзора сохраняет запись, когда это просто .new и .save.Так что я изменил его оттуда к этому ..
def create
@reviewstate = Reviewstate.find_or_initialize_by_songid_and_state(song.id, current_user.state)
@reviewstate.stdjlike.increment!(:stdjlike, reviewstate.stdjlike)
@reviewstate.stthinkclublike.increment!(:stthinkclublike, reviewstate.stthinkclublike)
@reviewstate.stplait.increment!(:stplait, reviewstate.stplait)
@reviewstate.save!
end
Перестает работать.Я пробовал разные варианты и методы, это когда я чувствую себя ближе всего.Пожалуйста, помогите мне, это было 4 дня:).
Спасибо заранее.