仅请求当前用户的内容

时间:2015-11-14 18:15:09

标签: ruby-on-rails

我有一个提出请求的服务,

.factory('movieService', ['$http', function($http) {
  return {
    loadMovies: function() {
      return $http.get('/movies_users.json');
    }
  };
}])

这是JSON输出,是两个表连接的结果。用户表和电影表。如您所见,用户与一部或多部电影相关联。

[
  {"id":1,
  "email":"peter@peter.nl",
    "movies":[
      {
        "id":4,
        "title":"Creed",
        movie_id":"312221"
      },
      {
      "id":5,
        "title":"Star Wars: Episode VII - The Force Awakens",
        "movie_id":"140607"
      }
    ]
  },

  {"id":2,
  "email":"jan@jan.com",
    "movies":[
      {
        "id":4,
        "title":"Creed",
        movie_id":"312221"
      }
    ]
  }
]

这是movies_users_controller.rb

def index
  movie = Movie.all
  render :json => movie.to_json(:include => :users)
end

是否可以仅在JSON输出中显示当前用户而不是两个用户?

1 个答案:

答案 0 :(得分:1)

  

是否可以仅在JSON输出中显示当前用户   而不是两个用户?

这意味着你有一些身份验证系统(如果你没有,你可以查看devise)。

取代所有电影,只需获取当前用户的电影。

 @movies = current_user.movies

为了完成这项工作,您必须在用户模型和电影模型之间建立关系,如下所示:

 # user.rb
 has_many :user_movies
 has_many :movies, through: user_movies

 # user_movie.rb
 belongs_to :movie
 belongs_to :user

 # movie.rb
 has_many :user_movies
 has_many :users, through: :user_movies 

此外,您似乎正在构建一个API,我建议使用类似jbuilder的东西来构建您的json对象,它会更干净,您将能够显示您想要的几乎所有内容。