質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

553閲覧

Railsでのgemの使い方について(Progate)

pipimaru

総合スコア16

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/06/23 04:13

編集2021/06/23 04:21

Progeteにて、Ruby on Rails5(学習コースⅪ) にて、gem を使ってみよう! ということで'bcrypt'についての解説を見ているのですが、
ここでのgemの扱いのスライド説明がよくわからないので教えて頂きたいです。

<gem bcryptをインストールし、bcryptの機能を使ってパスワードをハッシュ化するのがコース目標>
□スライドの説明
bcryptをインストールすると、has_secure_passwordというメソッドが使えるようになります。図のようにパスワードを扱うUserモデルにhas_secure_passwordを追加します。こうすることで、ユーザーを保存する際に自動的にパスワードをハッシュ化してくれます。
→演習においてはhas_secure_password メソッドを追加してください と言われ、

class User < ApplicationRecord def has_secure_password #ここ! end validates :name, {presence: true} validates :email, {presence: true, uniqueness: true} def posts return Post.where(user_id: self.id) end end

と追加した。なお答えを見るとdef とendは不要だった。
(正解判定にはなった)

###質問1
このdefもendも書かない has_secure_password とだけ記述すると、何が起きるのですか?
スライドを検索しましたが、このようにメソッド名だけ置いてある説明を見つけられませんでした。
基礎かもしれませんが教えて下さい。

###質問2
bcryptの機能説明では 各所で記述している[password]というカラムにデータを保存すると、[password_digest]にハッシュ化されて保存される。
とスライドに記載してあるのですが、
コードを組む過程で、カラムを自分で追加する際、[password]ではなく[pass]などと記述してそれをもとにコードを組んでいた場合、使えないということでしょうか。

###質問3
(質問2の回答が「[pass]でもこねこねすれば使えるよ」、ではなかった場合の話)
質問2は、bcryptでのお話ですが、bcrypt以外にも沢山のgemがあると思います。
この沢山のgemが使用している、特定のワードを回避しながらコードを組まないといけないのでしょうか?
[編集追記]
gemの機能を使いたい場合は予め定められたワードを使用して、
gemの機能を使わない場合は、インストール済み又はインストール予定のgemのワードを回避しながら

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このdefもendも書かない has_secure_password とだけ記述すると、何が起きるのですか?

has_secure_passwordというメソッド(Rails API)を実行します。Rubyでは、classの内部でもコードを実行できます。

コードを組む過程で、カラムを自分で追加する際、[password]ではなく[pass]などと記述してそれをもとにコードを組んでいた場合、使えないということでしょうか。

has_secure_passwordに引数を渡すことで設定すれば可能です。Railsでは、設定より規約といって、「最初から便利なように組んでおく」という文化になっています。


なお、has_secure_password自体は(bcryptがないと動作しないとはいえ)もともとRailsにある機能です。「gemを使う」という例としては誤解を招きそうな印象です。

投稿2021/06/23 04:18

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/06/23 04:19

上に書いている「validates」も「バリデーションの設定のために、クラス定義内で実行するメソッド」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問