在json对象

时间:2015-05-07 02:52:45

标签: ruby-on-rails json

我正在尝试在我的rails应用程序中实现Like功能。 我现在做的是我有模型问题,答案和喜欢。

基本上, 问题模型有问题详细信息,例如user_id,question_text,答案模型有答案详细信息,例如user_id,answer_text和 Like model 之间有类似关系user_id,question_id和answer_id。

在我的问题控制器中,我想渲染问题详情页面,它会向我们显示一个问题和几个答案。 我已经提出问题json,以及与问题相关的答案。

{
  "questions": [
    {
      "id": 1,
      "text": "Turtoise",
      "user_id": 22
    }
  ],
  "answers": [
    {
      "id": 41,
      "question_id": 1,
      "user_id": 17,
      "text": "Good"
    },
    {
      "id": 7,
      "question_id": 1,
      "user_id": 17,
      "text": "alifff"
    }
  ],
  "isLike": [
    {
      "id": 1,
      "user_id": "17",
      "question_id": "1",
      "answer_id": null,
      "isLike": false
    }
  ]
}

现在我想像这样渲染json

   {
  "questions": [
    {
      "id": 1,
      "text": "Turtoise",
      "isLike": {
        "id": 1,
        "user_id": "17",
        "question_id": "1",
        "answer_id": null,
        "isLike": true
      }
    }
  ],
  "answers": [
    {
      "id": 7,
      "text": "Good",
      "isLike": {
        "id": 2,
        "user_id": "17",
        "question_id": null,
        "answer_id": "8",
        "isLike": false
      }
    },
    {
      "id": 8,
      "text": "Nice",
      "isLike": {
        "id": 3,
        "user_id": "17",
        "question_id": null,
        "answer_id": "8",
        "isLike": false
      }
    }
  ]
}

你能告诉我如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您可能需要在此处使用rails关系。

一般来说,你的Question hasMany Like, and Like belongsTo Question。同样可以回答,Answer hasMany Like, and Like belongsTo Answer

由于Like可以belongsTo多个模型,您可以尝试使用Polymorphism Association

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations