AR삽질러

Rails 一日一つメソッド (Day6) new, persisted?メソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day6) new, persisted?メソッド

아랑팡팡 2023. 12. 26. 16:21
728x90

 

Rails 一日一つメソッド (Day6) new, persistedメソッド

 

1. newメソッド

'new' メソッドはRailsのActiveRecordで使われ、新しいモデルインスタンスを生成する。

注意 : 'new' メソッドは単純にメモリーにオブジェクトを生成するだけで、DabaBaseには保存されない。

 

newメソッド例題

def new
	@user = User.new
end

 - newメソッドは Modelでオブジェクトを生成しDabaBaseに保存されないまま、ユーザーに表示される。

 

User.newの動作方法

 1. オブジェクト生成 

  - 'User.new' は'User'モデルでインスタンスを生成するまだ、保存されない。

 2. 属性初期化

  -  'new' メソッドでパラメータを渡すと、オブジェクトの属性を初期化でくる。

 3. DabaBaseとの独立性

  - 'new' メソッドで生成されたオブジェクトは 'ActiveRecord'の 'save' メソッドを呼び出まではDabaBaseに保存されない。

 


2. persisted?メソッド

 

'psersisted?' メソッドは ActiveRecordにオブジェクトがDabaBaseにすでに保存されているかどうかを示す。

オブジェクトが存在する場合 : trueリターン

オブジェクトが存在しない場合 : falseリターン

 

psersisted?メソッド例題

def create
    @user = User.create(user_param)

    if @user.persisted?
      redirect_to user_path(@user), notice: 'ユーザーが登録されました。'
    else
      render :new
    end
end

 

@user.persisted?

 - 'User' オブジェクトがDabaBaseに生成されていることを確認する。

 - @userがDabaBaseに保存された時は、(persisted? = true)、'redirect_to user_pat(@user)' を返す。

 - 失敗した時は、(persisted? = false) を返し、render :newnに戻る。

 


3. has_secure_password

 

has_secure_passwordはActiveRecordモデルで使われるメソッドで、Passwordセキュリティなどの機能を提供する。

has_secure_passwordメソッドは 'bcrypt' ライブラリを使ってPasswordを安全に処理する。

 

has_secure_password例題

class User < ApplicationRecord
    has_secure_password
end
gem "bcrypt",          "3.1.18"

 

 - ユーザモデルにhas_secure_passwordを追加することで、パスワード管理に関する上記の機能がユーザモデルに自動的に追加される。このため、データベースのusersテーブルにはpassword_digestというフィールドが存在する必要があり、 has_secure_passwordは、このpassword_digestフィールドにハッシュされたパスワードを保存する。

 

 

728x90
반응형
LIST