Ruby on Rails (3.x >= 3.2.9) のためのブログです (どっちかというと社内ブログ的な感じで、基礎から書いてきます) 。
12月
04
Comments

modelの作成方法についてメモを残しておきます。

Railsにはscaffoldという機能があり、コレを使うと作成・更新・一覧表示などの機能をもったものを自動で作成してくれます。(詳細はググって下さい)
ただ、ここではこのscaffoldは使用しないものとします。




それでは。Userモデルを作成してみます

① モデル作成


# userモデルの作成
$ rails generate model user
      invoke  active_record
      create    db/migrate/20121204111949_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/unit/user_test.rb
      create      test/fixtures/users.yml

このコマンドにより。app/models/user.rb と、test配下のファイル、また、db/migrate/[timestamp]_create_users.rb が作成されます。



② db/migrate ファイルの編集


①で作成されたdb/migrate/[timestamp]_create_users.rb を開いて、以下のように編集

  1. class CreateUsers < ActiveRecord::Migration  
  2.   def change  
  3.     create_table :users do |t|  
  4.       t.string :email:null=>false  
  5.   
  6.       t.timestamps  
  7.     end  
  8.   end  
  9. end  

t.[データ型] :[カラム名],[オプション] の形式です。
ここで、Rails3系において使用出来るデータ型は、先程のURL先に書いてありますので、ご参照下さい。

ここで、t.timestamps を書いておけば、動的に created_at (作成日)updated_at (更新日) を追加してくれます。

ActiveRecord::Migration のメソッドに関しては、[コチラ] を参照。
あとは[ ココ(pentan.info) ]が非常にわかいやすくまとめて下さっています。



③ migrate処理を行う


# アプリケーションのルートディレクトリで以下を実行
rake db:migrate

これにより、先程編集した[timestamp]_create_users.rb の通りに、テーブルが作成されます。

マイグレーションに関するコマンドのリファレンスは [コチラ] を参照



④ modelに処理を書いてく

  1. class User < ActiveRecord::Base  
  2.   def findall  
  3.     @users = User.all  
  4.   end  
  5. end  

こんな感じで....
基本的に、Railsは「convention over configuration」(設定より規約) なので、データベース名やカラム名が規約と異ったりしない場合は何もかかなくてOKな様です。(つまり、migrateしてテーブルを作成した後は、modelにどんどんロジックを書いてくだけでOK)


とりあえず、今回はこんなとこです。


Categories: , , , , ,

Leave a Reply