Ruby on Rails 8章後半 ログイン機構

投稿者: | 2019年8月6日

Ruby on Rails 8章後半 ログイン機構をやりました。

〇ログインしているユーザ
ログインしているかどうかは、
session[:user_id]
-> 1
これで1のユーザがログインしている状態。

session[:user_id]
-> nill
これはログインしていない状態

User.find(session[:user_id])で,モデルが取れる状態がログインしていて、
かつそのユーザ情報が生きている状態といえる。

〇||演算子のテクニック

@current_user = @current_user || User.find_by(id: session[:user_id])
とすると、@current_userが not nillな状態だと[true]と評価されるため、後続のUser.find_by..は評価されない。
if @current_user == nil
@current_user = User.find_by(id: session[:user_id]
end
と同じ。

〇ログアウトのリンク
<%= link_to “log out”, logout_path, method: :delete %>
link_toのオプションにhttpのメソッドが指定できる模様。

〇モデルを指定したリンク
<%= link_to “profile”, current_user %>
redirectの時と同じ。なので
<%= link_to “profile” ,user_path(current_user) %>
でもよい。

〇ドロップダウンのライブラリ
//= require jquery
//= require bootstrap
を、application.jsに追加する。
(assetの下)

〇クラスメソッド
構文
def User.digest(string)
:
:
end

〇フィクスチャ
test/fixtures/users.yml
多分,モデルをrails generateしたときに作れたんだろう。
構文
michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest(‘password’) %>

テスト時にテスト用のDBにロードされる。

users(:michael)
でとれる。
(いちいちID探す処理を書くのも面倒だからいいね)

コメントを残す

メールアドレスが公開されることはありません。