我使用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);
}
};
}]);
答案 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才能将电影与用户相关联