データベースでの内容制限について理解できないことがあったので質問させて頂きます。
同じメールアドレスを持つUserが複数人いるのを避けるための t.index :email, unique: trueのコードの意味がわからないので教えてください。
indexメソッドは引数の値が何番目にあるかを教えてくれるメソッドだと思うのですが、ここでなぜ同一メールアドレスを避ける検証に使われているのか理解できません。
Userモデルのマイグレーションファイルのコード
class CreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| t.string :name, null: false t.string :email, null: false t.string :password_digest, null: false t.timestamps t.index :email, unique: true end end end
初歩的な質問で申し訳ございませんが、教えて頂けると有り難いです。よろしくお願いいたします。
> Userモデルの検証
どこ(どのコード)で検証しているのですか。
> 同じメールアドレスを持つUserが複数人いるのを避けるため..
なぜそう思ったのですか。
> ...だと思うのですが
コピペしたのですか。
その場合はどこからコピペしたのですか。
> Userモデルの検証
検証ではなく、データベースでの内容制限でした。
> 同じメールアドレスを持つUserが複数人いるのを避けるため..
Ruby on Rails 5 速習実践ガイドという本でこのコードの説明に、「名前やメールアドレスやパスワードには何かしら文字列が必ず入りますので、これらの属性の値がNULLになる事はありません。また、同じメールアドレスを持つユーザーが複数人存在することもありません。」とあったので、t.index :email, unique: trueのコードが、同じメールアドレスを複数持つユーザーを避ける為のコードだと思いました。
> ...だと思うのですが
https://techacademy.jp/magazine/19936
このサイトを読んで自分なりに解釈しました。
分かりにくく申し訳ございません。
> 検証ではなく、データベースでの内容制限でした。
他の人が探しやすくするために、タイトルを変えることをおすすめいたします。
その他はありがとうございました。
回答1件
あなたの回答
tips
プレビュー