LoginSignup
8
5

More than 5 years have passed since last update.

初心者向けrails generate しないでmodel を作ってみる。

Posted at

仮にtodoリストのモデルを作ることにします。

title:string body:text priority:integer

こんな感じのカラムを持つtodoテーブルをrailsでgenerateコマンドを使わずに作っていきます。

generateコマンドを使うと

rails g model todo title body:text priority:integer

      invoke  active_record
      create    db/migrate/20160917065918_create_todos.rb
      create    app/models/todo.rb
      invoke    test_unit
      create      test/models/todo_test.rb
      create      test/fixtures/todos.yml

では、これからgenerateを使わずにモデルを作っていきたいと思います。
マイグレーションファイルから作っていきます。

rails g migration todos
  invoke  active_record
  create    db/migrate/20160919105130_todos.rb

参考 http://qiita.com/zaru/items/cde2c46b6126867a1a64

マイグレーションとは

通常テーブルを新規に作成するには必要なSQL文を直接実行して作成します。カラムを追加したりする場合も同じです。それに対してマイグレーションを使う場合はテーブルを新規に作成するためのマイグレーションスクリプトと呼ばれるスクリプトファイルを作成し実行します。後からカラムを追加したい場合には、カラムを追加するための別のスクリプトファイルを作成し実行します。

スクリプトファイルはRailsで決められた文法で記述するのですが、使用しているデータベースがMySQLであってもSQLiteであっても同じ記述が対応できます。またスクリプトファイルは作成された順に残っていますので、最初のものから順に実行することでまったく同じテーブルを簡単に作成できます。

引用 http://www.rubylife.jp/rails/model/index5.html

先程作成したマイグレーションファイルにrubyでデータベースに追加したいテーブル、カラムなどの情報を書いていきます。

20160919105130_todos.rb
class Todos < ActiveRecord::Migration[5.0]
  def change
    create_table :todos do |t|
      t.string :title,         null: false
      t.text :body,            null: false
      t.integer :priority,     null: false, limit: 7
    end
  end
end

railsのcreate_tableメソッドを使ってテーブルを作成。

rake db:migrateをすると...

➜  todo_app git:(master) rake db:migrate:reset

Dropped database 'todo_sample'
Database 'todo_sample' does not exist
Created database 'todo_sample'
Database 'todo_sample' already exists
== 20160919105130 Todos: migrating ============================================
-- create_table(:todos)
   -> 0.0154s
== 20160919105130 Todos: migrated (0.0155s) ===================================

無事テーブルが作成されました。

次にtodo.rbを作成。

app/models/todo.rb
class Todo < ApplicationRecord
end

以上!

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5