Для простоты я написал этот вопрос, как если бы писал приложение для блога, но на самом деле это совершенно другое приложение. У меня есть действие show, подобное этому в моих 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
, если только мне не нужны комментарии, сделанные этим пользователем. Тем не менее, я хочу, чтобы все комментарии к этим сообщениям были независимо от пользователя, который их создал.
Как я могу добиться этого с помощью активного сериализатора модели?