6章 ユーザーのモデルを作成する
まずはモデル作成から。rails g model モデル名 型で。
ActiveRecordの理解
ActiveRecordとは概念。DBからRubyへ、データを引っ張るとか。
→具体だと、user=User.find(id: 1)のようなもの。
migrateとは。
マイグレーション機能をひと言で説明すると、「SQLを書くことなくRubyでデータベース内にテーブルを作成することができる機能」です。
SQLを書く必要がない理由は、Ruby on Rails内のActiveRecordという機能がRubyをSQLに自動翻訳することができるため
userモデルの作成について
#userオブジェクトを引数なしで作成
user.new
#userオブジェクトに引数を入れて作成
user=User.new(
name: "Michael Hartl", email: "mhartl@example.com"
)
※createを用いて1行でも書ける
User.create(name: "A Nother", email: "another@example.org")
テスト
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(name: "Example User", email: "user@example.com")
end
test "should be valid" do
assert @user.valid?
end
end
assert メソッドは、第1引数がtrue である場合に、テストが成功したものとみなします。
test""do内で、
@user.valid?で存在あることを予測。
(もうちょい理解度を深める)
lengthとかはprogateと同じ
errors.full_messagesについて
全てのエラーメッセージを配列で取得します。
inspectメソッド:配列やオブジェクトを、文字列で返すもの(to_sと似てる?)
データベースのindexについて
Railsでは (6.1.1で見たように) マイグレーションでインデックスを追加します
$ rails generate migration add_index_to_users_email
セキュアパスワードの使用にて
生のパスワードではなく、ハッシュ化されたパスワード同士を比較している
→入力PWをハッシュ化したもの=DB登録をハッシュ化したもの で認識
User.rbに、has_secure_passwordを追加で解決
has_secure_password
には、仮想的なpassword
属性とpassword_confirmation
属性に対してバリデーションをする機能も(強制的に)追加されている
DBの開き方
development.sqlite3
について、ダウンロード出来たが、開けない。
→解決。Windows版をダウンロードしてた。