18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初めてのRails4】 CRUDをまとめて作る rails g scaffold

Last updated at Posted at 2014-04-02

Ruby on Railsを触ることになったので、Ruby on Rails チュートリアルを参考にしながら作成記録のメモ

環境

  • CentOS6.4
  • Rails 4.0.4

事前準備に必要なもの

参考にしたサイト

とりあえずユーザー一覧は必要でしょ

こんな事やったら途中で設計ミスで死ぬパターンになるんですかね???

とりあえず練習として

  • name (ユーザー名)
  • email (メールアドレス)

の2つでもあればいいか。。。。

まあいいかとりあえず作ってみよう

と適当にやっていきます。

アプリケーションに必要なコントローラ、モデル、ビューをまとめて生成(rails generate scaffold)

Railsドキュメント#アプリケーションに必要なコントローラ、モデル、ビューをまとめて生成(rails generate scaffold)を読んでとりあえず作成してみます。

【注意】命名規則について

Ruby on Rails チュートリアル#第2章デモアプリケーション#2.4最後にの注意事項に書かれていますが

scaffoldにおける命名は、モデル名の命名の習慣に従っています。リソースやコントローラは複数形で表し、モデルは単数形で表すのが普通です。UsersではなくUserとしたのはこのためです。

と書かれていますので単数形、複数形の取り扱いには気をつけましょう。scaffoldコマンドCamelケースの単数形で実行すると自動的にモデルは単数形、コントローラー、Viewは複数形にしてくれます。

上記を踏まえた上でまずはドライランオプションで作られるMVCを確認

-p がドライランモードです

/path/to/hoge/{プロジェクト名}
rails g scaffold User name:string email:string -p

      invoke  active_record
      create    db/migrate/20140402113547_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    rspec
      create      spec/controllers/users_controller_spec.rb
      create      spec/views/users/edit.html.erb_spec.rb
      create      spec/views/users/index.html.erb_spec.rb
      create      spec/views/users/new.html.erb_spec.rb
      create      spec/views/users/show.html.erb_spec.rb
      create      spec/routing/users_routing_spec.rb
      invoke      rspec
      create        spec/requests/users_spec.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      rspec
      create        spec/helpers/users_helper_spec.rb
      invoke    jbuilder
      create      app/views/users
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.js.coffee
      invoke    scss
      create      app/assets/stylesheets/users.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

問題がなければ、ドライランオプションを外して作りましょう

/path/to/hoge/{プロジェクト名}
rails g scaffold User name:string email:string

プロジェクト用のDBを作成する

rake db:create

migrateを実行する

マイグレーション分からない方はRailsドキュメント#マイグレーションとはを一読してください

/path/to/hoge
rake db:migrate

== 20140402113618 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0082s
== 20140402113618 CreateUsers: migrated (0.0083s) =============================

作成されたテーブルの確認

確認しましょう

/path/to/hoge
mysql -u{ユーザー名} -p -e "use rpanda_development; show tables;"
+------------------------------+
| Tables_in_rpanda_development |
+------------------------------+
| schema_migrations            |
| users                        |
+------------------------------+

usersというテーブルができています

railsサーバーを起動する

railsに搭載されているサーバーを起動しましょう。簡単です。

/path/to/hoge/{プロジェクト名}
# sはserverの略
rails s

=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-04-02 20:40:06] INFO  WEBrick 1.3.1
[2014-04-02 20:40:06] INFO  ruby 2.0.0 (2013-11-22) [x86_64-linux]
[2014-04-02 20:40:06] INFO  WEBrick::HTTPServer#start: pid=22345 port=3000

portが3000番で起動していますね。

portが開いているか確認する

自分はVagrantで作成したvirtualboxで作成をしています。でよく忘れがちなのがportを開いておらず、ホストOS側から見れない現象です。

自分のメモ用に残しておきます

/etc/sysconfig/iptables
 Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# これ追加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

iptablesの再起動

/path/to/hoge
sudo /etc/init.d/iptables restart

ブラウザで見れるか確認

自分のゲストOS側のIPアドレスは192.168.56.103なので確認します

Listing usersと表示されていたらOKです。

18
17
5

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
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?