Rails ユーザーのパスワードを保存するモデルクラス を作成する

Gemfileのbcryptのコメントを外します。

gem 'bcrypt', '~> 3.1.7'


bcryptをインストールします。

$ bundle install


Userモデルクラスを作成します。

$ bin/rails g model users


Userモデルクラスに、has_secure_password を追加します。

class User < ApplicationRecord
  has_secure_password
end


マイグレーションファイルに、テーブルの項目を追加します。
このとき、暗号化したパスワードを保存する password_digest を追加します。

class CreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      t.string :email, null: false
      t.string :password_digest

      t.timestamps
    end
  end
end


テーブルを作成します。

$ bin/rails db:migrate


railsコンソールを起動し、ユーザーデータを登録します。

$ bin/rails c
> user = User.new
> user.name = 'hikotaro"
> user.email = 'hikotaro@example.co.jp'
> user.password = 'zaq12wsx'
> user.password_confirmation = 'zaq12wsx'
> user.save


続けて、ユーザーのパスワード認証を試します。

> user.authenticate('cde34rfv')
false
> user.authenticate('zaq12wsx')
#<User id: 1, name: "hikotaro", email: "hikotaro@example.co.jp", password_digest: "$2a$12$bWRsPGrzgCac0g0IYgjW8OXshnDwaEmoIcHeJ2AP3ot...", ....

Rails メッセージの名詞を日本語にする

Railsアプリケーションのconfigディレクトリ以下のlocalesディレクトリに、ja.ymlを追加します。

ja:
  activerecord:
    models:
      book: 書籍
    attributes:
      book:
        title: 書籍名
        author: 著者名
        price: 価格

Railsのメッセージを日本語にする

configディレクトリのapplication.rbに以下を追加します。

config.i18n.default_locale = :ja


Gemパッケージのrails-i18nをインストールします。
Gemfileに以下を追加します。

gem 'rails-i18n'


rails-i18nをインストールします。

$ bundle install


日本語のメッセージは、rails-18nのソースでわかります。
railsのlocaleのja.ymlを見てください。
github.com

リソースを扱うコントローラのアクション名

アクション パス HTTPメソッド 説明
index /books /GET リソースの一覧を表示する
show /books/123 GET リソースを追加する
new /books/new GET リソースを作成する
edit /books/news/123/edit GET リソースの属性を表示する
create /books POST リソースを更新するためのフォームを表示する
update /books/123 PATCH リソースを更新する
destroy /books/123 DELETE リソースを削除する


コントローラを作成します。

$ bin/rails g controller books


ルーティングを設定します。

resources :books


コントローラにアクションを追加します。

class BooksController < ApplicationController 
  def index
  end

  def show
  end

  def new
  end

  def edit
  end

  def create
  end

  def update
  end

  def destroy
  end

Railsでデータベースを作成する

データベースを作成します

$ bin/rails db:create


Bookモデルクラスを作成します。

$ bin/ralis g model book


マイグレーションスクリプトを作成します。
db/migrateディレクトリ以下のxxxxxx_create_members.rbというファイルがあります。
このファイルをマイグレーションスクリプトといいます。

class CreateBooks < ActiveRecord::Migration[5.2]
  def change
    create_table :books do |t|
      t.string :title, null: false        # 書籍名
      t.string :author, null: false   # 著者名
      t.integer :price, null: false   # 価格
      t.timestamps
    end
  end
end


マイグレーションコマンドを実行し、テーブルを作成します。

$ bin/rails db:migrate


Sqliteのコンソールを起動し、テーブルが作成されたか確認してみます。

$ sqlite3 db/development.sqlte3
sqlite> .tables
ar_internal_metadata  books schema_migrations 
sqlite> .exit


railsコンソールを起動します。

$ bin/rails c


Bookモデルを使って、booksテーブルにデータを保存してみます。

>  book = Book.new
> book.title = '吾輩は猫である'
> book.author = '夏目漱石'
> book.price = 880
> book.save