Невозможно изменить ассоциацию 'User # spreads', поскольку исходный класс отражения 'Spread' связан с 'Group' с помощью: has_many.) - PullRequest
0 голосов
/ 01 мая 2020

Кроме того, администратор портала может добавить исключение для пользователя или для группы пользователей. Исключением может быть полная или частичная замена значений по умолчанию. В случае частичной замены значения по умолчанию применяются, когда пользовательские значения отсутствуют. Иерархия для определения окончательной конфигурации для пользователя: 1. исключения пользователя 2. исключения группы 3. значения по умолчанию

class User < ApplicationRecord
  belongs_to :group, required: false
  has_many :spreads , through: :group
end

class Group < ApplicationRecord
  has_many :users
  has_many :spreads
end
class Spread < ApplicationRecord
  belongs_to :group, required: false
end

2.6.5 :008 > User.first.spreads << Spread.first
  User Load (4.1ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
  Spread Load (0.7ms)  SELECT "spreads".* FROM "spreads" ORDER BY "spreads"."id" ASC LIMIT $1  [["LIMIT", 1]]
Traceback (most recent call last):
        1: from (irb):8
ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection (Cannot modify association 'User#spreads' because the source reflection class 'Spread' is associated to 'Group' via :has_many.)
2.6.5 :009 > 

Здесь я хочу напрямую добавить Spread Пользователю без использования групповой ассоциации! Кто может решить это?

...