1

在我看来,我有以下 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":{...}.. .},...}。我怎样才能做到这一点?

4

1 回答 1

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
于 2012-10-16T17:41:44.637 回答