見出し画像

【応用43%】TECHCAMP名古屋15日目


Ruby/Ruby on Railsで20個、Gitで2個、テストで6個のことについて学んだので、それぞれ説明します

★Ruby/Ruby on Railsで学んだこと★
1.eny?メソッド
何か含まれている場合はtrueになります

2.errorsメソッド
ActiveRecordインスタンスのメソッドです
エラーメッセージを取得できます

3.errors.full_messagesメソッド
エラーメッセージを全件取得できます


4.マイグレーションファイルでNOT NULL制約をつける方法
t.string :name, null: false

カラム追加時にヌルフォルスを追加します

5.マイグレーションファイルで一意性制約をつける方法
add_index :users, :name, unique: true

インデックス追加時にユニークトゥルーを追加します

6.モデルクラスでNOT NULL制約をつける方法
validates :name, presence: true

バリデーツでカラム名を指定してプレゼンストゥルーを追加します

7.モデルクラスで一意性制約をつける方法
validates :name, uniqueness: true

バリデーツでカラム名を指定してユニークネストゥルーを追加します

8.マイグレーションファイルとモデルクラスで制約をつけることの違い
モデルクラス側、つまりアプリケーション側で制約をつけないと
ユーザーにエラーを出すことができなくなり、ユーザビリティが下がります

マイグレーション側、つまりデータベース側で制約をつけないと
データベースに不正なデータの登録を許してしまいます

9.deviseのストロングパラメーターを設定する時の注意点
permitメソッドの引数でシンボルの設定値をミスしても
railsは教えてくれないので注意が必要です

permit(:signup, keys:[:name])
permit(:sign_up, keys:[:name])

10.deviseのbefore_action :authenticate_user!の意味
ログインしていない場合はログインページを表示します

11.deviseでログアウトのリンクを作成する方法
= link_to "ログアウト", destroy_user_session_path, method: :delete

12.「モデル名」+「_ids」の意味
_idsは特別な意味を持ちます
たとえばGroup.create(name: "グループ1", user_ids: [1,2])
とすると、グループは1、ユーザーは2の中間テーブルのレコードを作成します

13.collection_check_boxes
railsのヘルパーメソッドの1つです
チェックボックスを作成します
collection_check_boxes :user_ids , User.all, :id, :nameで
送信ハッシュキー、表示データ、送信ハッシュバリュー、表示カラムの順で指定すると
チェックボックスが表示されます

14.redirect_toとrenderの違い
redirect_toはルーティング、コントローラー、ビューの流れで表示します
renderはビューのみを用いて表示します

15.ストロングパラメータで配列に対して保存を許可する方法
params.require(:group).permit(:name, user_ids: [])
キーの名称に関連付けてバリューに[]を指定します

16.コントローラーでデータベースから自身の情報を取得する方法
@group = Group.find(params[:id])

アット変数イコールモデル名ドットファインド パラムス ID

17.form_forやform_withでcreateアクションかupdateアクションどちらを実行するか
引数の変数が空かそうでないかで、実行するアクションを切り分けています
空ならcreate、そうでなければupdateアクションを実行します

18.本文と画像どちらも無い場合のみ制約を付与する方法
validatesでunlessを使用します

validates :content, presence: true unless: :image?
バリデーツ 本文 プレゼンストゥルー アンレス 画像

とすることで、本文と画像どちらも無い場合のみNOT NULL制約を付与します

19.deviseの導入方法
1.Gemfileにgem 'devise'を記述します
2.terminalでbundle installを実行します
3.rails g devise:installを実行します
4.rails g devise userを実行します
5.xxx_devise_create_users.rbでカラムの追加、バリデーション・インデックスの設定をします
6.rails db:migrateを実行します
7.Userモデルでカラムの追加やバリデーションの設定をします
8.新規作成ページであるapp/views/devise/registrations/new.html.hamlを追加します
9.ログインページであるapp/views/devise/sessions/new.html.hamlを追加します
10.編集ページであるapp/views/users/edit.html.hamlを追加します
11.その3ページのパーシャルであるapp/views/devise/shared/_links.html.hamlを追加します
12.app/controllers/application_controller.rbにdevise用ストロングパラメーターを追加します
13.日本語化のためにconfig/locales/devise.ja.ymlとconfig/locales/ja.ymlを追加します
14.config/application.rbでconfig.i18n.default_locale = :jaとします


20.Carrierwaveの導入方法
1.brew install imagemagickを実行します
2.Gemfileにcarrierwaveとmini_magickを追加します
3.bundle installします
4.rails g uploader imageを実行します
5.画像を取り扱うモデルクラスにてmount_uploader :image, ImageUploaderを追加します
6.app/uploaders/image_uploader.rbでinclude CarrierWave::MiniMagickのコメントアウトを外します
7.app/uploaders/image_uploader.rbでprocess resize_to_fit: [50, 50]のコメントアウトを外し、画像サイズを指定します

★Gitで学んだこと★
1 .DS_Storeファイルをaddから除外する方法
.gitignoreに.DS_Storeと記述します

2.直前のコミットを取り消すコマンド
git reset --soft HEAD^

ギット リセット ハイフン2つ ソフト ヘッド キャレット

★テストで学んだこと★
1.プロダクションコード
本番環境で実際に作動するプログラムのことです

2.テストコード
テストを行うためのプログラムのことです

3.RSpecとは
Rubyを元に作成されたテストに特化した言語です
rspec-railsというGemをインストールすると、RSpecを利用できます

4.テストコードを書く理由
仕様漏れを減らせます
リファクタリングや機能追加をしやすくします
テストが通過すると達成感に繋がり、
モチベーションの維持に役立てることもできます

5.単体テスト
ひとつのプログラムのまとまりに関して、それ単体が正常に動くか確かめるテストのことです
railsの場合、モデルクラス1つ、コントローラークラス1つにつきそれぞれテストコードを書きます

6.統合テスト
複数のプログラムが連動して行われる処理が
意図した通りに行われるかを確かめるテストのことを
統合テストと呼びます

この記事が気に入ったらサポートをしてみませんか?