mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-26 01:33:22 +00:00
Update migration
This commit is contained in:
@@ -1,7 +1,21 @@
|
||||
class RemoveBillAddressesWithNullPhone < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
remove_foreign_key "spree_users", "spree_addresses", column: "bill_address_id", name: "spree_users_bill_address_id_fk"
|
||||
add_foreign_key "spree_users", "spree_addresses", column: "bill_address_id", name: "spree_users_bill_address_id_fk", on_delete: :nullify
|
||||
execute("DELETE from spree_addresses WHERE phone IS NULL AND id IN(SELECT bill_address_id FROM spree_users)")
|
||||
class BillAddress < ActiveRecord::Base
|
||||
self.table_name "spree_addresses"
|
||||
|
||||
scope :invalid, -> { where(phone: nil) }
|
||||
end
|
||||
|
||||
class SpreeUser < ActiveRecord::Base
|
||||
belongs_to :bill_address
|
||||
|
||||
def self.invalid_bill_address_ids
|
||||
joins(:bill_address).merge(BillAddress.invalid).pluck(:bill_address_id)
|
||||
end
|
||||
end
|
||||
|
||||
def up
|
||||
address_ids = SpreeUser.invalid_bill_address_ids
|
||||
SpreeUser.where(bill_address_id: address_ids).update_all(bill_address_id: nil)
|
||||
BillAddress.where(id: address_ids).delete_all
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user