ロイの奮闘記録

PdMをやってるロイの日記です。人のつながりを増やしたいと思いながら、社会と奮闘しています

#26 7/14 6章 ユーザーのモデルを作成する

6章 ユーザーのモデルを作成する

 

 まずはモデル作成から。rails g model モデル名 型で。

 

ActiveRecordの理解

ActiveRecordとは概念。DBからRubyへ、データを引っ張るとか。

→具体だと、user=User.find(id: 1)のようなもの。

 

migrateとは。

マイグレーション機能をひと言で説明すると、「SQLを書くことなくRubyでデータベース内にテーブルを作成することができる機能」です。

SQLを書く必要がない理由は、Ruby on Rails内のActiveRecordという機能がRubySQLに自動翻訳することができるため

 

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")

 

テスト

 
test/models/user_test.rb
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版をダウンロードしてた。