ActiveRecord Включить результат, не содержащий данных связанной таблицы - PullRequest
0 голосов
/ 30 декабря 2018

Почему, когда я отображаю Джейсон для @portfolio_items, я получаю данные только для Портфеля, а не технологий, но когда я делаю @ portfolio_items.technologies, я получаю только записи о технологиях, которые я хочу, чтобы объект Джейсона содержал оба

    @portfolio_items = Portfolio.includes(:technologies).find(27)

    puts  json: @portfolio_items

возвращает

    Portfolio id: 27,
    title: "Portfolio title: 0",
    subtitle: "Angular", 
    body: "Lorem ipsum dolor sit amet, consectetur adipiscing...", 
    main_image: "https://via.placeholder.com/600x400", 
    thumb_image: "https://via.placeholder.com/350x200", 
    created_at:"2018-12-28 23:18:35", 
    updated_at: "2018-12-28 23:18:35"

и

 puts  json: @portfolio_items.technologies

возвращает

   [#<Technology id: 7, name: "Technology 0", portfolio_id: 27, created_at: 
   "2018-12-28 23:18:35", updated_at: "2018-12-28 23:18:35">,

   <Technology id: 8, name: "Technology 1", portfolio_id: 27, created_at
 :"2018-12-28 23:18:35", updated_at: "2018-12-28 23:18:35">,

  <Technology id: 9, name: "Technology 2", portfolio_id: 27, created_at: 
   "2018- 
   12-28 23:18:35", updated_at: "2018-12-28 23:18:35">]

Так что в принципе почему @portfolio_items не имеет значения, которое вportfolio_items.technologies

1 Ответ

0 голосов
/ 30 декабря 2018

Это потому, что .technologies - это метод, вызываемый для объекта @portfolio_items, который будет возвращать технологии, связанные с ним, но он не смешивает их вместе, о чем я думаю, что вы спрашиваете.Чтобы отобразить это как вложенный объект JSON, вам нужно что-то вроде этого.

puts @portfolio_items.as_json(include:{technologies:{}})

Это может помочь, если вам интересно: https://apidock.com/rails/ActiveModel/Serializers/JSON/as_json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...