rails g model や rails g scaffold 実行時、--no-migration オプションを指定すればマイグレーションファイル(db/migrate/xxxx.rb)は作成されない。
1 2 3 4 5 6 7
$ rails g model hoge --no-migration Running via Spring preloader in process 55995 invoke active_record create app/models/hoge.rb invoke test_unit create test/models/hoge_test.rb create test/fixtures/hoges.yml
ただし、rails g scaffold だと、(--no-resource-route オプションを付けても) new や edit などの View ファイルも作成されてしまうため、必要な分だけ rails g model と rails g controller <actions> の方が良いと個人的には思った。
classfuga < ApplicationRecord belongs_to :hoge end
あとは ActiveRecord あたりがよしなにやってくれる(っぽい)。
1 2 3 4 5 6 7 8 9
$ rails c Rails5.2.3 Ruby2.6.3 pry(main)> User.first User Load (1.2ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1 +----+------+-------------------+------------------+ | id | name | updated_at | created_at | +----+------+-------------------+------------------+ |1| foo |2019-08-0403:... | 2019-08-04 03... | +----+------+-------------------+------------------+ 1 row in set
【おまけ】rails db:schema:dump で db/schema.rb 作成
既存 DB の情報を rails db:schema:dump で db/schema.rb にダンプできる。
別にやらなくてもアクセスできるが、既存 DB の構成を確認したい場合にはあると便利かもしれない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
$ rails db:schema:dump # 何も出力されない $ cat db/schema.rb # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. ... ActiveRecord::Schema.define(version: 0) do
create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t| t.string "name", null: false t.datetime "updated_at", null: false t.datetime "created_at", null: false end ... end
まとめ
DB 参照だけなら config/database.yml と app/models/your_model.rb だけ作れば良い