[英]Rails - Include association in json response
我有2个表格/模型:路径和问题。 每个问题都属于一条路径
我的question.rb:
class Question < ActiveRecord::Base
belongs_to :path
end
我的path.rb
class Path < ActiveRecord::Base
has_many :questions
end
一切都很好
p = Path.last
Path.questions
返回我需要的一切,但我返回的是json响应,如下所示:
@path = Path.find_by_id(params[:id])
render :status=>200, :json => {:status => "success", :path => @path, :message => "Showing path"}
该答案不包括课程的问题。 我必须更改哪些内容以包含属于该路径的所有问题? 我知道我可以只添加:path_questions => @ path.questions,但是没有新的返回变量,没有办法包含问题吗? 我希望我的意思很清楚。
这很hacky,但应该可以:
:path => @path.as_json.merge(:questions => @path.questions.as_json)
最终,您可以在模型中覆盖as_json:
def as_json(options={})
includes = [*options.delete(:include)]
hash = super(options)
includes.each do |association|
hash[self.class.name.underscore][association.to_s] = self.send(association).as_json
end
hash
end
然后只需调用:: :path => @path.as_json(:include => :questions)
注意,它还将在:include
to_json方法中添加:include
选项。
我在Rails 5 API应用程序中这样做:
BooksController
def index
@books = Book.limit(params[:limit])
render json: @books, include: ['author'], meta: { total: Book.count }
end
在上述情况下, Book belongs_to
Author 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.