ブシトラの日記

エンジニア1年生の雑多記事

パーフェクトRails6章

6章

イベント管理のアプリを作る

 

OAuthとは

三者となるアプリケーションに対して安全にアクセス制限を提供するためのプロコトル。

qiita.com

 

Github認証

omniauthでGoogleを使う。

!!session[:user_id]

これと 

session[:user_id].present?

て同じだよな。。二重not、意味はわかるがなんか気持ち悪い

def self.find_or_create_from_auth_hash!(auth_hash)
provider = auth_hash[:provider]
uid = auth_hash[:uid]
nickname = auth_hash[:info][:nickname]
image_url = auth_hash[:info][:image]

User.find_or_create_by!(provider: provider, uid: uid) do |user|
user.name = nickname
user.image_url = image_url
end
end

これわかりやすいよねー。シンプルだ

 

ログインとログアウトは何度もやったので割愛します

 

Eventモデルの作成

resource コマンド久しぶりに使ったなw

Time.zone.nowのほうが一般的で、Time.nowなどの組み込みクラスは非推奨

datetime_select 久しぶり

 

下の #errors で設定したところに

- now = Time.zone.now

%h1.mt-2 イベント作成

= form_with(model: @event, class: "form-horizontal") do |f|
#errors
.form-group
= f.label :name
= f.text_field :name, class: "form-control"
.form-group
= f.label :place
= f.text_field :place, class: "form-control"
.form-group
= f.label :start_at
%div
= f.datetime_select :start_at, start_year: now.year, end_year: now.year + 1
.form-group
= f.label :end_at
%div
= f.datetime_select :end_at, start_year: now.year, end_year: now.year + 1
.form-group
= f.label :content
= f.text_area :content, class: "form-control", row: 10
.form-group
= f.label :image
= f.file_field :image, class: "form-control-file"
= f.submit class: "btn btn-primary"

 

下記が失敗した時

def create
@event = current_user.created_events.build(event_params)

if @event.save
redirect_to @event, notice: "作成しました"
end
end

create.js.erbがrenderしてnewのところに挿入される(views/application/_errors.html.haml は省略)

document.getElementById("errors").innerHTML = "<%= j render("errors", errors: @event.errors) %>"

これ、RUNTEQでもやったけど当時は意味わからんかったけど流石にわかるなー。

 

これをSJRと言うのは知らなかったw

ajaxでぬるぬる動くのはいいな。ただこれは、Vue.jsとかと対立するらしい(ならVueでよくね?ってなるのね)

 

あとは省略。

 

イベント参加、退会機能、かなり濃かった