こんにちは。オーキです。
Railsを初めて3ヶ月が経ったので自分の力でRailsを使ったアプリケーションを作っていきたいと思います。徒然なるままにその場その場で仕様を決めながら、最終的に自分で使える程度の機能になれば良いかなと思います。初心者なので途方もない時間と紆余曲折あると思いますがのんびり作成します。
さぁ、エローワールドを共有しよう!
エロには教科書無く先生もいないので、みんながみんな自分なりに調べたり経験したりして、自分の中に自分なりのエロの世界を構築していると思います。
芸能人のアイコラ画像を本人のエロ画像と勘違いして大興奮したり、ワンクリック詐欺に遭いかけて焦ってタブを消して体が熱くなったり、初めてエロ動画を見て唾液が粘度を増すのを感じたり。そしてそんなものを見ている自分に嫌気がさして禁欲して3日も経たないうちに猿に戻ったり。そんなこんなで我々はエロ世界に Hello World!
するのです。“エローワールド“です。そしてそこから皆さんは各個人の好みを見つけ、エローワールドを自分に色に染めあげていくのです。
ここで本題です。我々のエローワールドは我々のアイデンティティです。大衆に紛れる我々が持つ唯一の個性です。私くらいの年齢であればエローワールドに住み着いて10年ほどでしょうか。私はエロ以外に10年間続けて来れたものはありません。
そんなかけがえのないものを自分の中に押し込めておくのは勿体無いのです。もっと周りに共有し、語り合うべきだと思います。あなたのエローワールドについて教えていただきたいです。
Railsでオカズ共有アプリを作ってみよう!
と、いうわけでみんなが自分のエローワールドを共有できるようなWebアプリケーションを作っていきたいと思います。
早速 Rails new
して作ってみました。
できるだけ良いコードを書けるよう努力したいですが、気ままに作っていきたいと思います。
# ユーザークラス
class User < ApplicationRecord
before_save { self.email = email.downcase }
validates :name, presence: true, length: { minimum: 1, maximum: 30 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, uniqueness: { case_sensitive: false }, format: { with: VALID_EMAIL_REGEX }
validates :password, presence: true, password_weak: true
has_secure_password
has_many :diaries, dependent: :destroy, foreign_key: :creator_user_id
end
# ユーザー作成コントローラー
# frozen_string_literal: true
class UsersController < ApplicationController
before_action :reject_logged_in_user, only: %i[new create]
def index
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
login(@user)
redirect_to mypage_path, notice: "新規ユーザーを作成しました"
else
render :new
end
end
def show
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
def reject_logged_in_user
redirect_to mypage_path, notice: "既にログインしています" if logged_in?
end
end
# ユーザーログイン・ログアウトコントローラー
# frozen_string_literal: true
class LoginSessionsController < ApplicationController
def new
@form = LoginForm.new
end
def create
@form = LoginForm.new(login_params)
return render :new if @form.invalid?
user = User.find_by(email: @form.email)
if user && user.authenticate(@form.password)
login(user)
redirect_to mypage_path, notice: "ログインしました"
else
render :new
end
end
def destroy
return render :new unless logged_in?
logout
redirect_to root_path, notice: "ログアウトしました"
end
private
def login_params
params.require(:login_form).permit(:email, :password)
end
end
全て載せると長くなってしまうので、ユーザー登録ができそうなところまで来たということところだけ載せたいと思います。。ご興味ある方は github リポジトリをご覧ください!
ここまで読んでいたただきありがとうございます。ご指摘やアイデア、感想をいただけると幸いです。それではまた次回!
コメント