Active Record включает в себя own_to и has_many не возвращает ассоциаций - PullRequest
1 голос
/ 10 ноября 2019

У меня есть следующие модели:

user.rb

class User < ApplicationRecord
  has_many :invitations
end

organization.rb

class Organization < ApplicationRecord
  has_many :invitations
end

приглашение.rb

class Invitation < ApplicationRecord
  belongs_to :user
  belongs_to :organization
end

Я пытаюсь запросить активную запись следующим образом:

user = User.find(params[:id])
user.invitations.includes(:organization)

Я хочу иметь возможность получить все приглашениядля пользователя, а также иметь приглашения включают атрибуты их связанной организации. Однако я получаю только приглашение и никаких атрибутов организации.

Даже если я попытаюсь:

Invitation.includes(:organization)

Я все еще не получаю организацию, связанную с каждым приглашением.

Любая и вся помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

@ demir уже ответил на ваш вопрос.

Так же, как дополнение - возможно, вы перепутали includes для моделей с include опцией to_json \ as_json.

Если вы хотите вернуть какой-то результат JSON (например, в своем ответе API), вы можете сделать user.as_json(include: [invitations: { include: :organization }])

0 голосов
/ 10 ноября 2019

включает метод обеспечивает быструю загрузку. Это решает проблему N + 1 запросов. Вы можете получить доступ к загруженной организации, например user.invitations.first.organization. Здесь не будет новых запросов.

Если вы хотите объединить атрибуты приглашения и организации, вы можете использовать объединения и выбрать.

user.invitations
    .joins(:organization)
    .select('invitations.*, organizations.foo, organizations.boo as blabla')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...