昨日のオカズ共有アプリを作る

サイトロゴ Railsアプリケーション

こんにちは。オーキです。

 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 リポジトリをご覧ください!

 ここまで読んでいたただきありがとうございます。ご指摘やアイデア、感想をいただけると幸いです。それではまた次回!

コメント

タイトルとURLをコピーしました