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探す処理を書くのも面倒だからいいね)