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) との関係が含まれており、この ForumTopic を json に含めたいので、最終的に {..., "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 に答える