工夫 - メールアドレスを一意でなくても済むように設定を変更する方法
概要
かなりの数のユーザーが配偶者と同じ電子メール アドレスを共有しているため、電子メール アドレスではなくユーザー名でログインするように Devise を設定しました。それは私たちがサービスを提供するユニークな市場です。ただし、パーソナリティ計測結果を記録するには、各配偶者に個別のアカウントが必要です。
データベースは一意の電子メール アドレスを必要としないため、2 つのアカウントに対して同じ電子メール アドレスを受け入れることができます。ただし、Devise では依然としてアカウントごとに一意の電子メール アドレスが必要です。これを変更するために使用できる設定または回避策はありますか?
解決策
• ユーザー モデルでこれらのメソッドをジミーにします (Devise でマウントされているモデルは何でも) Device の一意性メソッドは if: 修飾子を使用して定義されているだけなので、実行しないように強制しているだけであることに注意してください。
デバイス 4.2.1 以下の場合
def email_required?
false
end
def email_changed?
false
end
Devise 4.3.0以降の場合
def will_save_change_to_email?
false
end
プライベート API に「モンキーパッチ」を適用しているため、デバイスは将来的にそのメソッドを変更する可能性があることに注意してください。 Devise の API の変更を防ぐために、これについて十分なテスト カバレッジを確保してください。
移住
一意性を強制するデータベース インデックスを削除します。 Rails g 移行 update_index_on_users デフアップ sql = ‘DROP INDEX 電子メール上のインデックス ユーザー’ sql << ’ ON users’ if Rails.env == ‘production’ # Heroku pg ActiveRecord::Base.connection.execute(SQL) 終わり
• ニーズに合わせて検証を再実装してください。