添加到json数组Rails 3中的现有对象

时间:2013-08-15 21:36:11

标签: json ruby-on-rails-3

  render :json mailbox.inbox.as_json(:include => [
      {:messages => {:only => [:body]}}, 
      {:recipients => {:only => [:Firstname,:Surname]}}
    ])

从我的Rails控制器生成以下输出:

[
    {
        "conversation":
        {
            "subject":"Subject for conversation 2",
            "messages" :[
                {"body":"Message 1"},
                {"body":"Message 2"} 
            ],
            "recipients": [
                {"Firstname":"James","Surname":"Smith"},
                {"Firstname":"John","Surname":"Doe"} 
            ]
        }
    }
]

我想要做的是为每个会话对象添加 current_user 键:值对,以便out示例如下所示:

[
    {
        "conversation":
        {
            "subject":"Subject for conversation 2",
            "messages" :[
                {"body":"Message 1"},
                {"body":"Message 2"},

            ],
            "recipients": [
                {"Firstname":"James","Surname":"Smith"},
                {"Firstname":"John","Surname":"Doe"} 
            ],
            "current_user" :[
                {"id":10}
            ]
        }
    }
]

我无法访问相关的会话模型(它正在运行邮箱gem),因此无法覆盖as_json。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

所以,正式化评论。

通过查看json_as的apidock,您可以看到包含任意数据的唯一方法是添加一个方法,该方法可以重新调整要在模型中使用的数据。

由于在许多方面做不是最好的事情并且您无法访问该模型,因此自定义json的一种方法是使用名为jbuilder的流行gem,它允许您创建一个更复杂的json。