Проверьте, если значение уже выходит

0

У меня есть 2 таблицы, один называется фильмы и один называется пользователей. Пользователь может добавить фильм в свой список наблюдения. Когда пользователь делает это, приложение создает новую запись в моей таблице фильмов с именем фильма, идентификатором, датой выпуска и т.д. Таким образом, возможно иметь 3 записи одного и того же фильма. Но все с разными идентификаторами пользователя. Это не предпочтительнее.

Поэтому я пытаюсь выяснить, как проверить, существует ли запись (фильм с значением movie_id). Если фильм уже существует, добавьте текущий идентификатор user id кодовое имя user id чтобы несколько пользователей могли использовать одну и ту же видеозапись. Если он еще не существует, создайте новую запись.

Это моя текущая функция создания в моем контроллере movie.rb,

def create
  respond_with Movie.create(movie_params.merge(user_id: current_user.id))
end

И в моей модели фильмов у меня есть,

belongs_to :user

И я использую Angular в качестве моей front-end framework, поэтому это моя угловая функция addMovie,

  movieAdd.add()
    .then(function(response){
      $scope.movieListID = response;
      console.log ('Not empty' + $scope.movieListID)

      for (var i = 0; i < $scope.movieListID.releases.countries.length; i++) {
        var release = $scope.movieListID.releases.countries[i];
        if (release['iso_3166_1'] == 'NL') {
            releaseNL = release;
        }
      }

      if(typeof releaseNL === 'undefined'){
        // With release date

        Notification($scope.movieListID.original_title + ' is toegevoegd, maar heeft nog geen Nederlandse premiere datum.');

        createMovie.create({
          title:          $scope.movieListID.original_title,
          release_date:   $scope.movieListID.release_date,
          image:          $scope.movieListID.poster_path,
          movie_id:       $scope.movieListID.id
        }).then(init);

      } else {
        Notification.success($scope.movieListID.original_title + ' is toegevoegd.');

        createMovie.create({
          title:          $scope.movieListID.original_title,
          release_date:   releaseNL.release_date,
          image:          $scope.movieListID.poster_path,
          movie_id:       $scope.movieListID.id
        }).then(init);
      };

    })
  • 1
    Ваша схема кажется неправильной. Что вы пытаетесь смоделировать? Пользователь смотрит фильм или что-то? Если это так, вам понадобится больше моделей, например, MovieUser, который разрешает отношения "habtm" между фильмами и пользователями.
  • 0
    Я думал, что смогу вставить идентификатор текущего пользователя в идентификатор пользователя фильма. Этот коллум может иметь несколько идентификаторов пользователей.
Показать ещё 1 комментарий

1 ответ

1
Лучший ответ

Вы можете найти информацию о has-and-belongs-to-many и иметь-многие через отношения здесь. Я бы использовал один из этих двух методов для настройки отношений между пользователями и фильмами. Тогда, я думаю, в функции фильма вы бы:

  1. Проверьте, существует ли фильм в базе данных
  2. Постройте отношения и ответьте существующим фильмом, если он существует.
  3. Создавайте и отвечайте новым фильмом, если это не так.
  • 0
    Я пытаюсь использовать метод habtm, но у меня возникают проблемы при настройке контроллеров. Как бы вы это сделали?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню