2015-11-11 3 views
0

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

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

Это мой текущий создать функцию в моем контроллере movies.rb,

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

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

belongs_to :user 

И я использую Угловое как мой передний конец рамки, так что это моя угловая функция 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

Я думал, что могу вставить идентификатор текущих пользователей в коллапс идентификатора пользователя фильма. У этой коллизии может быть несколько идентификаторов пользователей. –

+0

Это звучит уродливо, как черт, используйте другую таблицу для моделирования отношений. Вот как работают рельсы. –

ответ

1

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

  1. Проверить, если фильм уже существует в базе данных
  2. строить отношения и реагировать с существующим фильмом, если он существует.
  3. Создайте и ответьте новым фильмом, если это не так.
+0

Я пытаюсь использовать метод habtm, но у меня возникают проблемы с настройкой контроллеров. Как бы вы это сделали? –

Смежные вопросы