ぞえの技術めも

Ruby on Rails勉強中

【27日目】【1日20分のRailsチュートリアル】Userクラスを使って4章の復習

Ruby on Railsチュートリアル(第3版)

今日は「4.4.5 ユーザークラス」から。

4.4.5 ユーザークラス

Userクラスを作成したので中身の確認。

  attr_accessor :name, :email

ユーザー名とメールアドレスに対応するアトリビュートアクセサをそれぞれ作成します。

指定したインスタンス変数に取得(get)と設定(set)を行うメソッドを追加する感じ…?
インスタンス変数には@をつける、と。

  def initialize(attributes = {})
    @name  = attributes[:name]
    @email = attributes[:email]
  end

最初の行にあるinitializeは、Rubyの特殊なメソッドです。これは User.newを実行すると自動的に呼び出されるメソッドです。

メソッド名から予測はつく。
User.newで与えられた値を@name@emailに設定する。初期化ですね。

上のコードで、attributes変数は空のハッシュをデフォルトの値として持つため、名前やメールアドレスのないユーザーを作ることができます。

何も与えられなかったら名前やメールアドレスがないユーザーが作成可能、と。

  def formatted_email
    "#{@name} <#{@email}>"
  end

このメソッドは、文字列の式展開を利用して、@nameと@emailに割り当てられた値をユーザーのメールアドレスとして構成します。

formatted_emailを呼ぶと、設定した名前とメールアドレス使って"Taro <taro@example.com>"な文字列を返す、って感じかな。

Railsコンソールを起動し、example_userのコードをrequireして、自作したクラスを試しに使ってみましょう。

追加したクラスをRailsコンソールで使えるのか…!

>> require './example_user'     # example_user のコードを読み込む方法
=> true
>> example = User.new
=> #<User:0x00000004a81750 @name=nil, @email=nil>
>> example.name                 # attribuributes[:name]は存在しないのでnil
=> nil
>> example.name = "Example User"           # 名前を代入する
=> "Example User"
>> example.email = "user@example.com"      # メールアドレスを代入する
=> "user@example.com"
>> example.formatted_email
=> "Example User <user@example.com>"

実際にクラス使って理解が合ってることを確認。

initializeメソッドにハッシュを渡すことで、属性が定義済みの他のユーザを作成することができます。

>> user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
=> #<User:0x00000004a58490 @name="Michael Hartl", @email="mhartl@example.com">
>> user.formatted_email
=> "Michael Hartl <mhartl@example.com>"

これも理解通り。
基本はこういう使い方をするのかなー。

キリがいいので今日はここまで。 今日の作業時間は【23分】

次は「4.5 最後に」から。
そろそろ4章終わり!