WEBページでユーザー登録を行う際、
「名前の入力は必須です。」
「このメールアドレスは既に登録されています。」
などの表示を目にしたことはないでしょうか。
今回は、そんな”空白を防ぐ”、”重複を防ぐ”方法をご紹介します。
制約とは
データ登録の際、空白や重複を防ぐために使用するものが制約という仕組みです。これらはmigrate.b(マイグレーションファイル)に記述します。以下に、制約の種類を掲載します。
制約の種類
◯NOT NULL制約
データの空白を防ぐ制約です。テーブルの項目の値にNULL(空の値)が入らないように制限します。
#例
class Createテーブル名 < ActiveRecord::Migration[6.0]
def change
create_table :テーブル名 do |t|
t.srting :text, null: false #textカラムの空白を防ぐ
t.string :name, null: false #nameカラムの空白を防ぐ
t.timestamps
end
end
end
◯一意性制約
データの重複を防ぐ制約です。テーブル内で重複するデータが存在しないように制限します。
※changeメソッド内に記述します。
#例
class Createテーブル名 < ActiveRecord::Migration[6.0]
def change
create_table :テーブル名 do |t|
t.srting :text, null: false
t.string :name, null: false
t.timestamps
end
add_index :テーブル名, :text, unique: true #textカラムの重複を防ぐ
end
end
◯主キー制約
テーブルの主キーとなるカラムの空白・重複ともに防ぐ制約です。NOT NULL制約と一意性制約を両方設定しているのと同じ状態になります。Railsにおいて主キーは自分で設定するものではなく、「idカラム」として自動生成されます。
◯外部キー制約
テーブルが2つ以上存在する場合に使用します。(仮にA、Bとします。)
Aテーブルのidカラム(主キー)と、そのidで判別できるBテーブルのレコードを関連付けることで、Aテーブルのidに対してBテーブルのレコードが必ず存在していなければならないという制約です。このとき、型は”references”を使用するのが一般的です。
#例
class CreateB < ActiveRecord::Migration
def change
create_table :B do |t|
t.string :name
t.references :user_id, foreign_key: true #Bのuser_idカラムをAのidカラム(主キー)と関連付ける。
t.timestamps null: false
end
end
end
◯チェック制約
データが保存される際に、条件が満たされているかチェクする制約です。例えば、パスワードが8文字以上になるような条件を設定すれば、8文字以下の場合は保存されません。
※自分で設定することはあまりないです。
まとめ
制約など、プラスαの機能を覚えると作成するアプリケーションの使いやすさが向上するのでどんどん調べて覚えましょう!
また、制約については特にNOT NULL制約、一意性制約、外部キー制約の3つは自分で任意に設定するので記述の仕方をしっかり理解しておきましょう!
他にもrailsに関する記述の仕方を掲載していますのでよろしければご参照ください!
レコードの並び順を変えるには
おまけ【社会人になってから何を学べばいいか迷っている方へ】
小学校、中学校、高校、大学と今までは学ぶ内容をある程度指定されてきたため、”何を勉強するか”については迷うことはなかったかと思います。
ただ、社会に出てからは”何を勉強すればいいか”は誰も教えてくれません。そのため、周りの優秀な友達などを見ていると漠然とした不安を抱えることがあると思います。
ですが、「もう学びに迷う必要はない。これさえ見れば大丈夫!」私が実際に使っている”URU”というコンテンツを紹介します。
このコンテンツでは、独立・起業を目指す方向けにビジネスの基礎的な考え方、経営についてをはじめ、Youtube編集、Instagram運用、ブログの書き方、話し方・伝え方、株・投資などなど様々な内容を非常にわかりやすく教えてくれます!規模の大きさも信頼性があります。
私自身、社会人になってから色々な本や動画に手を出してみましたが、「学んでいる内容ずれてないかな?」と心の片隅で不安を抱えたまま学んでいました。全てが何か1つの媒体で学べたら楽なのに、、、と考えていたところで、URUというコンテンツに出会いました、
学ぶコンテンツを悩んでいる時間はもったいないです。
Youtubeにいくつも動画が上がっているのでまずはぜひご覧になってみてください!
URU Youtubeチャンネル
↓参考動画
MUP Youtubeチャンネル
↓参考動画
コメント