railsチュートリアル第七章 ユーザー登録成功
ユーザー登録成功
新規ユーザーを実際にデータベースに保存できるようにし、ユーザー登録フォームを完成させる。
ユーザー情報は自動的にデータベースに登録させる。
ブラウザの表示をリダイレクトして、登録されたユーザーのプロフィールを表示
ウェルカムメッセージも表示させる。
登録
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
# signupのページにアクセス
assert_no_difference 'User.count' do
# ユーザー数が変わらないかをテストする
post users_path, params: { user: { name: "",
# ハッシュのハッシュのようになっているように見える
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
# postリクエストを送信 フォーム送信をテストする
# データの投稿した後 assert_no_difference で違いを比べるらしい。
end
assert_template 'users/ne end
end
redirect_to @User
上と下は等価のコード
redirect_to user_url(@user)
演習
1.有効な情報を送信し、ユーザーが実際に作成されたことを、Railsコンソールを使って確認してみましょう。
>> User.second
User Load (0.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 1]]
=> #<User id: 4, name: "aa", email: "[email protected]", created_at: "2021-10-04 13:16:25", updated_at: "2021-10-04 13:16:25", password_digest: [FILTERED]>
2.リスト 7.26を更新し、redirect_to user_url(@user)とredirect_to @userが同じ結果になることを確認してみましょう。
class UsersController < ApplicationController
.
.
.
def create
@user = User.new(user_params)
# 外部メソッドを使う
if @user.save
# 保存の成功をここで扱う。
redirect_to user_url(@user)
# urlを指定して表示する
# 保存成功したらurlを表示する
else
render 'new'
# 保存に成功しなければnewアクションに移動する
# 失敗したらまた戻る
end
end
private
#外部から使えないようにする
def user_params
# Usersコントローラの内部でのみ実行される
# Web経由で外部ユーザーにさらされない
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
end
新しくデータを保存して同じ画面が表示されたので確認
Author And Source
この問題について(railsチュートリアル第七章 ユーザー登録成功), 我々は、より多くの情報をここで見つけました https://qiita.com/masatom86650860/items/3adf50f5f9408cfccf94著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .