为了简单起见,我写了这个问题,就像写博客应用程序一样,但实际上它是一个完全不同的应用程序。我的 users_controller.rb 中有一个与此类似的显示操作。
def show
@user = User.find(params[:id])
@posts = @user.posts
respond_to do |format|
format.html
format.json { render json: @user }
end
end
每个post
也有很多comments
。如果我想显示所有用户的帖子和对这些帖子的评论(无论哪个用户发表了评论),在 中views/user/show.html.erb
,从帖子和评论之间的明显关联中访问这些评论是相当容易的。
<% for post in @posts %>
<% post.comments.each do |c| %>
...
这将为我提供对这些帖子的所有评论,而不仅仅是用户发表的评论,这正是我想要的。
现在,我在这个应用程序中使用了活动模型序列化程序,在用户序列化程序中,我可以声明与帖子的关联has_many :posts
,然后如果我去 localhost:3000/user/1.json,我会看到用户详细信息和帖子。has_many :comments
但是,除非我只想要该用户发表的评论,否则我无法声明。但是,我想要对这些帖子的所有评论,而不管发布它们的用户是谁。
我如何使用主动模型序列化器来实现这一点?