0
  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键:值对,因此输出示例如下所示:

[
    {
        "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。任何帮助,将不胜感激

4

1 回答 1

0

因此,将评论正式化。

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

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

于 2013-08-16T00:53:10.610 回答