Rails has_many: через #new не устанавливает ассоциации на новый рекорд - PullRequest
0 голосов
/ 12 сентября 2018

Согласно документации Rails, можно использовать has_many: through в качестве ярлыка:

has_many: сквозная связь также полезна для настройки "ярлыки" через вложенные ассоциации has_many. Например, если В документе много разделов, а в разделе много абзацев, вы можете иногда хочется получить простую коллекцию всех абзацев в документ.

Допустим, у нас есть этот код:

class User < ApplicationRecord
  has_many :sub_users
  has_many :settings
end

class SubUser < ApplicationRecord
  belongs_to :user
  has_many :settings, through: :user
end

class Setting < ApplicationRecord
  belongs_to :user
end

Исходя из этого, если я запускаю user.settings.new, я получаю новый экземпляр Setting с user_id, установленным на user.id.

Отлично. Но если я запускаю sub_user.settings.new, я получаю новый экземпляр Setting, для которого user_id не установлен sub_user.user.id.

Это ожидаемое поведение?

1 Ответ

0 голосов
/ 12 сентября 2018

Я бы не использовал has_many through: для этого, delegate выглядит как лучшая идея https://apidock.com/rails/Module/delegate

class SubUser < ApplicationRecord
  belongs_to :user
  delegate :settings, to: :user
end

Ваш текущий код не подходит для has_many through, проверьте доки,отношения разные https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

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