Я использую Rails 4.2.7. Есть ли способ автоматически удалить потерянный объект, когда у меня больше нет объекта, указывающего на него? У меня есть эти две модели…
class MyObject < ActiveRecord::Base
belongs_to :address, :autosave => true, dependent: :destroy
class Address < ActiveRecord::Base
has_one :my_object
и в моей таблице PostGres «my_objects» у меня есть столбец «address_id», который является внешним ключом к таблице адресов. Ниже приведен мой метод, который я использую для сохранения объекта «MyObject» с сопровождающим его адресным объектом…
def save_with_address(params)
transaction do
if !params[:address].nil?
# Address isn't an object yet, it is just a bunch of parameters
params[:address][:state] = params[:address][:state].nil? ? nil : State.find_by_id(params[:address][:state])
params[:address][:country] = params[:address][:country].nil? ? nil : Country.find_by_id(params[:address][:country])
address = Address.new(params[:address])
address.user = self
address.save
self.address = address
end
# Save the object
save
end
end
Но я заметил, что если сущность my_object раньше имела адресный объект, этот объект остается в базе данных, несмотря на то, что он осиротел. Каков самый простой способ настроить вещи так, чтобы мой потерянный объект адреса был удален из базы данных?