2014年6月19日木曜日

ユーザークラスとインスタンス変数

 @から始まるインスタンス変数はビュー内で自由に使えるようになる。以下はその例。

 アプリケーションのルートディレクトリに下記ファイルを配置。
example_user.rb
class User
  attr_accessor :name, :email #アトリビュートアクセサを作成するとゲッターとセッターも作成され、これによりどのビューでも利用可能となる。
  def initialize(attributes = {}) #User.newで自動で呼び出されるメソッド。
    @name  = attributes[:name]
    @email = attributes[:email]
  end
  def formatted_email
    "#{@name} <#{@email}>"
  end
end
Railsコンソールで以下を実行した。
irb(main):001:0> require './example_user'
=> true
irb(main):002:0> example = User.new
=> #<User:0x007fbc4ca30600 @name=nil, @email=nil>
irb(main):003:0> example.name
=> nil
irb(main):005:0> example.name = "Example User"
=> "Example User"
irb(main):006:0> example.email = "user@example.com"
=> "user@example.com"
irb(main):007:0> example.formatted_email
=> "Example User <user@example.com>"
雰囲気はわかるけど、ちょっと頭に入ってこない。 そうです。わかってません。

 ちなみにrequireはファイルの読み込みに使い、includeは「モジュールが持ってる性質を、クラスに組み込むメソッド」とのこと。モジュールの特徴をクラスに追加するイメージのようだけど、ファイル読み込むのとどう違うんだか。
 頭がついていかないので、そのうち体で覚えます。

参考:
requireとincludeとextendとmodule_function(1)

0 件のコメント:

コメントを投稿