【未経験プログラミング】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