archived users
と呼ばれるusers
のバックアップテーブルを作成しようとしています。現在のユーザー属性(自己)のハッシュを取り、self.id
のマージをuser_id
としてArchivedUserを作成します。ArchivedUserのレコードを作成または更新します
ユーザーが復職すると、ArchivedUser
というレコードはまだArchivedUser
のテーブルに残ります。ユーザーがもう一度削除されると、変更されたすべての属性が更新されます。
は現在、それは検証エラーがスローされます。 Validation failed: User has already been taken
、self.id
はすでにArchivedUser
テーブルに存在します。
可能であれば既存のオブジェクトを更新するオブジェクトを処理する、または存在しない場合は新しいレコードを作成するより良い方法はありますか?私はRailsの4を使用していますし、find_or_create_by
を試してみましたが、それはその列が両方のテーブルに存在し、変更されませんので、奇数のエラー
Mysql2::Error: Unknown column 'device_details.device_app_version'
をスローします。
ユーザーは、メソッド
# 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)
)
のぞき見を取るための
感謝を削除します!