Ruby on Railsいいよね
さて、栄えある最初の投稿な訳ですが、個人的に大好きなツールであるRuby on Railsについて紹介したいと思います。
railsはいわゆるMVC型のフレームワークで、rubyの黒魔術を存分にいかして簡潔で直感的な記述が出来るのが大きな特徴です。
シンプルな処理をするだけのアプリケーションは一瞬で出来るので、開発効率って点ではかなり良いんじゃ無いかと思います。
PHPで書くのに比べて、当社比10倍くらいは違いますねー。
もうホントΣ(Д゚;/)/…エエ!?ってくらいです。
そんなイカしたツールであるrailsについて、ざっと説明をしてみます。
MVC型といったように、基本はModel、View、Controllerをガリガリ書いて、それがそのままWebアプリケーションとして動くようになっています。
Modelのコードは
class Territory < ActiveRecord::Base belongs_to :user attr_accessible :been_here, :lat, :lng, :name, :venue_id, :user end
みたいな感じです。クラス名がTerritoryになってるので、これはterritoryというmodelを定義しています。
対応するテーブルはterritoriesという名前をつける事になっていまして、テーブル名とmodelのクラス名に一貫性を持たせる点も、railsの大きな特徴ですね。
belongs_toってのは依存関係を作るクラスメソッドで、User クラスの方では
class User < ActiveRecord::Base has_many :territories attr_accessible :foursq_id, :name, :area end
のようにhas_manyというクラスメソッドを呼び出すことで、userとterritoryの間で1対多の関係が作れます。
これによって、Controllerでuser.territoriesみたいな感じでuserに紐付いたterritoryのarrayが取得できたりして超便利です!
attr_accessibleってのは取り出せるattribute(属性)を指定する為のクラスメソッドで、例えばattr_accessible :nameって書いとくと、user.nameでuserのnameを取得出来ます。
Model Classではこんな感じでmodel間の依存関係の定義と属性の扱いを行うのが最低限の仕事で、さらにvalidationなんかも行ったり。
(rails4からはvalidationはcontrollerで行うようになったらしいですが)
いい感じです。
で、次にView、Controllerについて説明しようと思う訳ですが、Modelだけで思ったより長くなっちゃったので続きは次回って事で。
けっこうグダグダになっちゃいましたが、残り二人は才気あふれる面白い方々なので、挽回してもらえると思います。。。
後はまかせた (・ω・`人)
追記
上でrails4からはvalidationがcontrollerにうつったって書きましたが、これは真っ赤な嘘でした。チラッと見かけた文章を信じてたんですが、ちゃんと調べたらrails4でもmodelでvalidationしてましたw
ちなみに、何故そんな嘘を書いてる人がいたかというと、rails4ではmass assignment脆弱性の対策をcontrollerでやるようになったからです。rails3.2ではmodelにattr_accessibleを書くことで変更できる属性を制限してmass assignment脆弱性に備えていたのですが、rails4からはcontrollerにstrong parametersの機能を使用したprivateメソッドを置くことで、対策を行うようになりました。この対策を行う場所がmodelからcontrollerに移ったので、validationがcontrollerに移ったという表現をする人が現れたのでしょう。
今回の教訓は、聞きかじりで書かずにきちんと調べましょうという事ですね。