0
ソフト削除可能な電子メールの一意性を持つコンタクトモデルがあります。レイルは保存時にApplicationRecordインスタンスを置き換えます
誰かがsoft_deleted連絡先の電子メールで連絡先を作成しようとすると、この新しいインスタンスがソフト削除されたレコードになります。
例が明らか
contact = Contact.new(email: '[email protected]')
contact.save # this got id = 1
contact.soft_destroy
# I expect contact2 to have id 1
contact2 = Contact.new(email: '[email protected]')
contact2.save
# I was able to do it with create
PSを作るために:私はこれの一部として保存この不気味な操作を行うことができので、もし私が実際に、nested_attributesなどの連絡先を作成しています、それは素晴らしいことです。
イベントにhas_manyはhas_oneのお問い合わせ
を招待私が得た最も近かったこの:
class Event < ApplicationRecord
accepts_nested_attributes_for :invites
before_save :restore_contacts
def restore_contacts
invites.each do |invite|
restorable_contact = Contact.find_by_email invite.contact.email
invite.contact = restorable_contact if restorable_contact
end
end
end
しかし、それは、このメソッドが実行される前に:(
なります
nested_attributes
を使用する必要がある場合は連絡先が存在します 'restore_contacts'が動作します、そうですか?あなたは「私が行った最も近い」ということを説明できますか? – rogelio
Ops、私の悪い、編集を参照してください –
ソフト削除のためのいくつかの特定の宝石を使用していますか? – rogelio