ログイン状態によって遷移するページがぁわる

authenticate_user!メソッド

ログインしている状態であればそのまま次のページにいくが、ログインしていない状態であればログインページに飛ぶようにする。

アプリケーションコントローラーにbefore_actionで記述することによって飛ぶようにできる。

before_action :authrnticate_user!と記述することでできる。

投稿検索機能作成

collectionとmember

collectionではルーティングに:idがついていない

memberではルーティングに:idがついている違いがある。

 

ビジネスロジック

データの処理などを行うプログラム処理を行うもの。

データをどのように処理するのか、どのデータを取得するのかなどを決めていく。

 

whereメソッド

モデル.where('検索対象になるカラムも含む条件式')といった形でモデルのテーブルで条件と一致するものを情報取得していく。

 

LIKE句

曖昧な文字列を検索するときに使うもの。最初が あ のものを検索したり、文字列の中にaという文字があるなどを検索するときに使う。

コメントモデルの作成

rails g model comment

コメントをするために使うコマンド。

 

ルーティングのネスト

コントローラーの中にコントローラーを作成することで入れ子構造にするもの。

ネストを利用するとモデルに結びついている情報を取得することができるが、利用しないと情報を取得することはできない。

一番の理由はアソシレーション先のレコードのidをparamsに追加してコントローラーを送るため。

 

 

 

Rails 続き

devise_parameter_santizierメソッド

deviseで言うparamsと同じような役割を持つ。

新規登録やログインなどのリクエストから情報を取得できるようになっている。

.permitを使うとdeiseで定義されているストロングパラメーターに対し、自分で追加したカラムも含めて指定することができる。

devise_parameter_santizierはプライベートメソッド内で使用することができる。

 

application_controller.rbファイル

これは全てのコントローラーファイルの共通の情報を記述することができるようになっている。

 

user_signed_in?メソッド

gem 'devise'がインストールされているため使用できる。ログインできているかを判断するために使われる。

 

リダイレクト

リダイレクトとは本来受け取ったパスとは違うパスに転送すると言うこと。

例えばログインしていない状態である情報を見ようとした際に新規登録のページに遷移したりするのがあると思うが、それがリダイレクトと呼ばれるものになる。

 

unless?メソッド

unlessではログインしているユーザーではないかどうかを判断するために使うもの。

 

redirect_toメソッド

redirect_toではリダイレクト先を指定するために使う。redirect_to action: :アクション名 これでリダイレクト先になるアクションを指定する。

 

expectメソッド

before_actionのオプションとなるものと考えるといい。

expectは除外すると言う意味を持ち、before_actionで事前処理を行うがその処理を行わないアクションを指定するものになっている。

 

current_userメソッド

ログイン中のidを取得するために使う。

 

mergeメソッド

ハッシュを統合するときに使う。今回はツイートの情報を持つハッシュと,user_idを持つハッシュの2つをまとめることができる。

 

has_manyメソッド

一人で複数の投稿していることを表すことができる。

Twitterなどがこれを使うことが多い。

 

belongs_toメソッド

一つの投稿に一人のユーザーがいることを表すために使う。

 

current_user.id == @tweet.user_id

上記のif文で囲むことによってログインするときに表示するものと表示しないもので分けることができる。

 

orderメソッド

並び順を変えるメソッド。だいたい日付順に変えるのが主流。

インスタンス=モデル名.order("並び換えの基準となるカラム名 並び順")

並び順コマンド

ASC 古いものから新しいものの順にする

DESC 新しいものから古いものの順番にする

 

部分テンプレート

ホームページではヘッダーやフッターなどは同じものになっていることが多い。

ですが、全てのページで同じように記述するとコードが長くなってしまう。

なので1つのページに同じコードを書くことで書く手間をなくしていく。

_〇〇.html.erbと最初に_がついているものが共通のものになる。 

 

renderメソッド

部分テンプレートの呼び出しの際に使うメソッド。

 

partialオプション

これはrenderメソッドのオプションで部分テンプレート名を記載すると呼び出すことができる。

例 partial: "sample"

 

localsオプション

部分テンプレートで変数を使えるようにできる。

locals: {post: "hello"}といった形にすると部分テンプレートでpostでhelloと出力できる。

 

 

Rails メソッドについて

Rails newではツイートの投稿ページを作成するためのもの

投稿を保存などするものではなく投稿するためのフォームなどを作るために使うと考えておくといい

 

form_withではメソッドや、urlを指定していたが、コントローラーで

def new

 @tweet = Tweet.new

end

といった形でインスタンス変数を指定しているのでmodel: @tweetとすることでメソッドとurlを指定しなくても良くなる。

Tweet.newと指定することで投稿先のパスやHTTPメソッドがいらなくなる

 

requireメソッドでは欲しい情報を指定することでそこだけゲットすることができる

params.require(:モデル1)といった風にするとモデル1の情報をだけ取ることだけできる

 

その中でpermitメソッドを使うことで上記のモデル1の中からテキストや、写真、登録した時間など細かく抜き取ることができる

params.require(:モデル1).permit(:キー名 :キー名)で抜き取ることができる

、params.require(:モデル1).permit(:image)といった形にする

 

プライベートメソッドではclassの外から取り出してほしくない情報を書いていくことができる

 

バリデーション

バリデーションはからの情報を送信することができないようにするメソッド

validates :name, presence: trueとすることでnameが空の状態で登録できないようにすることができる

 

ツイートIDにパラメーターを持たせる方法

/tweets/tweetのidとすることでパラメーターを送ることができる

link_to '削除', "/tweets/{tweet.id}", method: :deleteとすると削除ボタンが追加される

 

editアクション

流れとしてはツイートの編集ボタンを押して、editアクションに遷移して編集作業ページにいく。その後に、編集して編集完了ボタンを押したらupdateアクションで変更することができる。

 

beforeアクション

コントローラーの処理で同じ処理をするものがあるが、それを最初にまとめて処理して、記述の量を減らす役割を持つ。また、onlyを使うことによってどこのアクションでこの処理を行うのかを指定するコマンド。

before_action :set_tweet, only: :edit, :showといった形で使う

 

とりあえず今回のRails メソッドに関しては以上とする。

 

 

 

初めての日記

初めまして。老龍です。

現在は会社員として働く20歳です。

初めに自己紹介をしておきましょう。

愛知県に住む20の会社員、趣味は筋トレ。一番好きな筋トレはスクワット。

現在の最高重量は155kg。今年中には200kgにいけるのかもしれないし、いけないのかもしれない。

高校生の時にはラグビー部に所属していた男である。ちなみに最後の大会では愛知で一番弱い地区の6チーム中5位という輝かしい成績を残していた。

そんな男のブログである。

今後は、ちゃんとしたブログを書いていく予定なので、その辺どうぞよろしく。