在我看来,我有以下to_json:
<%=raw @forums.to_json(:methods => [:topic_count, :last_post]) %>;
在模型中我有以下方法:
def last_post
post = ForumPost.joins(:forum_topic).where(:forum_topics => {:forum_id => self.id}).order("forum_posts.created_at DESC").first
return post
end
然而,ForumPost包含与ForumTopic(belongs_to :forum_topic
)的关系,我想在我的json中包含这个ForumTopic,所以我最终得到{...,“last_post”:{...,“forum_topic” :{...} ...},...}。我怎么能做到这一点?
答案 0 :(得分:1)
通常最好在模型中保留这种声明。您可以覆盖模型中的as_json方法。这种方法允许您控制整个对象图的序列化行为,并且您可以为这些东西编写单元测试。
在这个例子中,我猜你的@forums变量引用了一个名为Forum的模型,如果我错了,希望你仍然能够理解。
class Forum
...
def as_json(options={})
super(methods: [:topic_count, :last_post])
end
end
class ForumPost
...
def as_json(options={})
super(methods: [:forum_topic])
end
end