【26日目】【1日20分のRailsチュートリアル】基本クラスの拡張とコントローラクラスの学習&Userクラスの作成
今日は「4.4.3 組込みクラスの変更」から。
4.4.3 組込みクラスの変更
Rubyでは組み込みの基本クラスの拡張が可能なのです。Ruby のクラスはオープンで変更可能であり、クラス設計者でない開発者でもこれらのクラスにメソッドを自由に追加することが許されています。
基本クラスの拡張なんてできるんだ…!
>> class String >> def palindrome? >> self == self.reverse >> end >> end => :palindrome? >> "deified".palindrome? => true
こっちの方が楽そう。
真に正当な理由がない限り、組み込みクラスにメソッドを追加することは無作法であると考えられています。
そうですね。
Railsの場合、組み込みクラスの変更を正当化できる理由がいくつもあります。たとえば、Web アプリケーションでは、変数が絶対に空白にならないようにしたくなることがよくあります (ユーザー名などはスペースやその他の空白文字になって欲しくないものです) ので、Railsはblank?メソッドをRuby に追加しています。
へー。
>> "".blank? => true >> " ".empty? => false >> " ".blank? => true >> nil.blank? => true
便利だけどblank?
がRailsの拡張であること忘れそう。。
4.4.4 コントローラクラス
Railsのコントローラで使うApplicationController
についてクラス階層などの説明。
さくっと読んで終わり。
実は、Railsは確かにRubyで書かれていますが、既にRubyとは別物なのです。Railsのクラスは、普通のRubyオブジェクトと同様に振る舞うものもありますが、多くのクラスにはRailsの魔法の粉が振りかけられています。Railsは独特であり、 Rubyとは切り離して学習する必要があります。
RailsでRubyを書くのとRubyだけ使って何かを作るのは別物なんだろうなー。
4.4.5 ユーザークラス
Userクラスを作成する前に「4.1 動機」の内容をコミットしておく。
$ git add -A
$ git commit -m "Custom helper"
よし、Userクラス作りましょう。
まずexample_user.rb
ファイルを作成。
$ touch example_user.rb
ファイルができたら中身を更新。
class User attr_accessor :name, :email def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] end def formatted_email "#{@name} <#{@email}>" end end
途中だけど今日はここまで。 今日の作業時間は【23分】。
次は「4.4.5 ユーザークラス」のUserクラスの中身を見ていくところから。