【未経験プログラミング】twitterクローン【32日】

TOPページ作成

 

ユーザー登録機能作成

Model データベースで永久保存する必要がある。

   必要なのはユーザー名、メールアドレス、ログイン認証の為のユーザーパス(暗号化される)

それぞれ name mail password_digest

暗号化された文字をダイジェストと言う。

モデルとマイグレーションファイルを作成。

rails g model User name:string email:string password_digest:string

db/migrateファイル確認。3箇所カラム問題なしであればマイグレーション

rails db:migrate

has_secure_passwordを記入でパスワードが有効

あまり深く考える必要はありません。password_digest カラムを用意し、モデルファイルに has_secure_password を記述すれば、ログイン認証のための準備を良しなにはからってくれると覚えておきましょう。

gemファイル

bcryptをインストール →パスワードダイジェストが有効になった。

 

各カラムのバリテーションを行う

name 

validates :name, presence: true, length: { maximum: 50 }

email
validates :email, presence: true, length: { maximum: 255 },
format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i },
uniqueness: { case_sensitive: false }

case_sensitive: false 大文字小文字 区別しない

before_save { self.email.downcase! } 保存後は小文字で保存されている。

7.2

Router

get 'signup', to: 'users#new'
resources :users, only: [:index, :show, :new, :create]

また、既に resources で users#new は設定されているのに、 get 'signup', to: 'users#new' をわざわざルーティングに追加したのは、ユーザの新規登録 URL を /signup にしたかったからです。 resources :users で生成される URL である /users/new は少し格好悪く思えます。そんなときには get 'signup' のように個別に設定することで解決します。また、 resources に :new も追加しているので /users/new でも新規登録ページが表示されます。それが嫌な場合には only 内の :new は削除します。

 

.7.3users#index

UsersContoroller作成:rails g controller users index show new create

 app/views/users/create.html.erb は不要の為削除

View フォロー/フォロワーの表示にusers/_users.html.erb使用するので先にパーシャルをしている。
<%= render 'users', users: @users %>

 

app/views/users/_users.html.erb

gravatar_urlは画像表示を変更するメソッド

定義されていない為Helper実装までここはエラーがでる。

 

rails g helper users →app/helpers/users_helper.rb