0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

railsチュートリアル第4章 ユーザークラス

Posted at

####ユーザークラス

class User
  attr_accessor :name, :email

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

end
    
  attr_accessor :name, :email

ユーザー名とメールアドレス(属性: attribute)に対応するアクセサー(accessor) をそれぞれ作成
アクセサーを作成すると、そのデータを取り出すメソッド(getter)と、データに代入するメソッド(setter)をそれぞれ定義
インスタンス変数は常に@記号で始まり、まだ定義されていなければ値がnil

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

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

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

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

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

requireして、自作したクラスを試しに使ってみましょう。

>> require './example_user'
=> true
>> example = User.new
=> #<User:0x00007f410082a2b0 @name=nil, @email=nil>
>> example.name
=> nil
>> example.name = "Example User"
=> "Example User"
>> example.email = "user@example.com"
=> "user@example.com"
>> example.formatted_email
=> "Example User <user@example.com>"

require './example_user' requireのパスにある’.’は、Unixの “カレントディレクトリ”
’./example_user’というパスは、カレントディレクトリからの相対パスでexample_userファイルを探すように指示
example = User.new 次のコードでは空のexample_userを作成します

####演習
1.クラスを作成

class User
  attr_accessor :first_name, :last_name,  :email

  def initialize(attributes = {})
    @first_name  = attributes[:first_name]
    @last_name = attributes[:last_name]
    @email = attributes[:email]
  end
  
  def full_name
    "#{@first_name} #{@last_name}"
  end
  
  def formatted_email
    "full_name  <#{@email}>"
  end
  
  def alphabetical_name
    "#{@last_name}, #{@first_name}"
  end
  
end

2.alphabetitcal_nameメソッドを作成

def alphabetical_name
    "#{@last_name}, #{@first_name}"
end

3.full_name.splitalphabetical_name.split(', ').reverseの結果を確認

>> user.full_name.split
=> ["Michael", "Hartl"]
>> user.alphabetical_name.split(', ').reverse                              
=> ["Michael", "Hartl"]

同じになった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?