I am trying to make a backup table of users
, called archived users
. It creates the ArchivedUser by taking a hash of the current users attributes (self) and merging in the self.id
as the user_id
.
When a user is reinstated, their record as an ArchivedUser
still remains in the ArchivedUser
table. If the user gets deleted a second time, it should update any attributes that have changed.
Currently, it throws a validation error:
Validation failed: User has already been taken
, as the self.id
already exists in the ArchivedUser
table.
What is a better way to handle an object where you update an existing object if possible, or create a new record if it doesn't exist. I am using Rails 4 and have tried find_or_create_by
but it throws an error
Mysql2::Error: Unknown column 'device_details.device_app_version'
which is odd, as that column exists in both tables and doesn't get modified.
User Delete Method
# creates ArchivedUser with the exact attributes of the User
# object and merges self.id to fill user_id on ArchivedUser
if ArchivedUser.create!(
self.attributes.merge(user_id: self.id)
)
Thanks for taking a peek!