仅显示用户内容

时间:2015-08-26 09:57:15

标签: ruby-on-rails angularjs devise

我使用Devise让用户通过Facebook登录或在我的网站上创建帐户。当他们登录后,他们可以将电影添加到他们的首页,问题是每个用户都看到所有电影,而不仅仅是他们添加的电影。

在我的movies_controller.rb中,我有,

def index
  respond_with Movie.all
end

我的movie.rb模型有

belongs_to :user

我的user.rb模型有

has_many :movies

目前我正在使用Movie.all这两个问题,显然是显示所有电影,只显示用户创建的电影的正确语法是什么。第二个问题,我是否需要将用户ID插入电影记录?

我使用Angular作为我的前端框架,

控制器,

  $scope.addMovie = function() {
    movies.create({
      title: $(event.currentTarget).parent().find('.title').text()
    }).then(init);
  };

服务,

.factory('movies', ['$http', function($http){
  return{
    create: function(movie){
      return $http.post('/movies.json', movie);
    }
  };
}]);

2 个答案:

答案 0 :(得分:3)

在索引方法上,您将获取所有电影。尝试仅获取current_user电影。

def index
  respond_with current_user.movies
end

第二个问题:您应该在电影表中添加user_id。否则你无法获得用户的电影列表。

作为数据库标准belongs_to :xyz应始终在db中显示为xyz_id以获取所有子记录。

答案 1 :(得分:2)

Dipak建议你可以得到   1.来自 Movie.all 的所有电影   2.当前用户来自 Movie.all 的电影 你肯定需要电影中的用户ID才能将电影与用户相关联