Ruby5をひたすら翻訳する日記

海外で働きたい欲が高まった海山はついに強硬手段に出た。自分だけのためにRuby5(http://ruby5.envylabs.com/)翻訳し続けます。おかしなところは、適宜指摘大歓迎です!><

Five Common Rails Mistakes

編集(2012-06-02): 全訳されたものがあります!こちらのサイト様の方をご参照ください!http://d.hatena.ne.jp/suginoy/20120515/p1



Ruby5で紹介されていた以下の記事を大体翻訳します。

2012-05-27: 途中になったまま、なかなか作業継続できないので公開してしまいます。

Five Common Rails Mistakes

http://www.mikeperham.com/2012/05/05/five-common-rails-mistakes/

私は今までRailsを使った仕事をしてきました。その中で、よくある5つの間違いを紹介します。

1. Migrations with no schema specifics

データモデルはアプリケーションの核になります。スキーマの制約なしでは、他のフィールドへの依存がなくなるまで、どんどん悪いデータになっていきます。


以下はcontactスキーマです。

create_table "contacts" do |t|
  t.integer  "user_id"
  t.string   "name"
  t.string   "phone"
  t.string   "email"
end

何が必要でしょうか?
ContactはUserにbelong_toであり、名前を持つでしょう。これを保証するために、データベースに制約を付ける必要があります。:null => falseを付与することで、バリデーションにバグがあって、失敗しても、保存はされず、modelに一貫性を持たせることができます。

create_table "contacts" do |t|
  t.integer  "user_id", :null => false
  t.string   "name", :null => false
  t.string   "phone"
  t.string   "email"
end

さらに、:limit => Nを使うとStringのサイズを指定できます。Stringのデフォルトは255ですが、電話の場合そんなにいらないでしょう。

2. Object-Oriented Programming

ほとんどのRailsプログラマオブジェクト指向Rubyのコードを書きません。
modelとcontrollerを設置することでMVCなコードを書きます。
/libにクラスメソッドと一緒にモジュールを作成します。
しかし、2-3年前に開発者たちは「RailsはただのRubyで、Rails関係なくオブジェクトを作成して構成できる」ということに気づいたのです。

3. Concatenating HTML in helpers

4. Giant queries loading everything into memory

5. Code review!