Как включить новый атрибут в мой массив json в ruby? - PullRequest
0 голосов
/ 12 мая 2018

У меня есть объект User, и у каждого пользователя есть {тег (атрибут tag_id). Я хочу вернуть информацию о User.all в json, а также добавить все атрибуты тега в тег.

Итак, у меня есть

users = User.where(some condition)
response = { token: current_user.token, users: users }
render json: response

и я получаю

"token":"token_value",
"users":[{ each user info here and also "tag_id":1}...]

Я хочу получить

"token":"token_value",
"users":[
    { each user info here and tag info inside each user "tag":{ tag info here }}...
]

Как я могу это сделать?

Я уже пробую все ответы из этого почти дублирующий вопрос

Только один "сработал", я пытаюсь:

users = User.where(some condition).to_json(include: [:tag])
response = { token: current_user.token, users: users }
render json: response

Но теперь мой JSON выглядит неправильно:

{"token":"9ce32ecb324dccdd7a3e691bd8eab404",
"users":"[
{\"id\":377,\"nome\":\"CAIXA-ALM-CPARK-PE-ELE-0203-PAV00-nomeDoarquivo.dwg\",\"endereco\":\"https://localhost-gus.s3.us-west-2.amazonaws.com/users/9/f8770023-00e9-401c-884b-a97d16cae10c/CAIXA-ALM-CPARK-PE-ELE-0203-PAV00-nomeDoarquivo.dwg\",\"s3_key\":\"users/9/f8770023-00e9-401c-884b-a97d16cae10c/CAIXA-ALM-CPARK-PE-ELE-0203-PAV00-nomeDoarquivo.dwg\",\"deletado\":\"NÃO\",\"tamanho\":3205827,\"user_id\":9,\"created_at\":\"2018-05-12T11:19:55.961-03:00\",\"updated_at\":\"2018-05-12T11:19:55.961-03:00\",\"tag_id\":7,\"upload_date\":\"2018-05-12T11:19:55.960-03:00\",\
"tag\":{\"id\":7,\"nome\":\"ELÉTRICA\",\"cor\":\"#4A148C\",\"created_at\":\"2018-04-05T09:06:35.227-03:00\",\"updated_at\":\"2018-04-05T09:06:35.227-03:00\",\"abreviacao\":\"ELE\"}}
]"}

Я получил\ для каждого атрибута, и я не знаю, почему

Но если я использую без токена в моем ответе, отлично работает:

users = User.where(some condition).to_json(include: [:tag])
response = { users: users }
render json: response

Я уже редактировал этот вопрос, потому что он был отмечен как дубликатно, как я объясняю выше, это не дубликат.Поэтому я следую инструкциям этой ссылки meta.stackexchange , чтобы кто-то с правами доступа мог это исправить.

1 Ответ

0 голосов
/ 14 мая 2018

использовать as_json

as_json возвращает хеш-представление объекта вашей модели, а to_json возвращает объект JSON.

> { :name => "Test", 'age' => 25 }.to_json
"{\"name\":\"Test\",\"age\":25,}"

> { :name => "Test", 'age' => 25, }.as_json
{"name"=>"Test", "age"=>25,}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...