检查值是否已退出

时间:2015-11-11 14:16:42

标签: ruby-on-rails angularjs

我有两张桌子,一张叫电影,一张叫用户。用户可以将电影添加到他们的监视列表中。当用户这样做时,应用程序在我的电影表中创建一个新的记录,其中包含电影名称,ID,发布日期等。因此,可以有3个同一部电影的记录。但所有用户ID都不同。这不是首选。

所以我试图找出如何检查记录(具有movie_id值的电影)是否已经存在。如果电影已存在,则将当前用户ID添加到user id列,以便多个用户可以共享同一个电影记录。如果它还不存在,请创建一个新记录。

这是我在movies.rb控制器中的当前创建功能,

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

在我的电影模型中,我有,

belongs_to :user

我正在使用Angular作为我的前端框架,所以这是我的角度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 个答案:

答案 0 :(得分:1)

您可以通过关系here找到有关has-and-belongs-to-many和has-many的信息。我会使用这两种方法之一来设置用户和电影之间的关系。然后,我认为,在电影功能中你会:

  1. 检查电影中是否已存在电影
  2. 构建关系并回复现有影片(如果存在)。
  3. 如果没有,则创建并回复新电影。