Удалить идентификатор has_one, связанный с первичным ключом has_many? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть 2 модели:

class Agency < ApplicationRecord
  has_one :branding
end

class Branding < ApplicationRecord
  has_many :agencies
end

, когда я уничтожал любой бренд, он все еще хранит свой ключ в Агентстве, где я сделал поле branding_id.

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

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Прежде всего, если Agency модель имеет столбец branding_id, она должна иметь belongs_to вместо has_one и предоставить возможность optional: true, чтобы branding связывание не требовалось:

class Agency < ApplicationRecord
  belongs_to :branding, optional: true
end

Во-вторых, чтобы сделать это, вы должны использовать опцию nullify, например:

class Branding < ApplicationRecord
  has_many :agencies, dependent: :nullify
end
1 голос
/ 06 марта 2019

Rails предоставляет эту опцию, пожалуйста, проверьте ниже, он будет обновлять идентификатор до нуля в агентстве.для получения дополнительной информации проверьте это

class Branding < ApplicationRecord
  has_many :agencies, dependent: :nullify
end
...