【27日目】【1日20分のRailsチュートリアル】Userクラスを使って4章の復習
今日は「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章終わり!