Rails Usersリソース 追記

今日はRilsの基本概念Usersリソースにふれました。

リソースっていってもかなりいろいろな理解があるので
ここでいうリソースとはデータモデルwebインターフェイスが組み合わさったもの。

データモデルとはRDBMSに格納してあるデータと一緒ですね

データモデルをwebで取り扱えるよ的な理解でいいのかな

user用のデータモデルと組み合わさってUsersリソースみたいです

ユーザーをHTTPプロトコル経由で自由に(CURD)作成/読み出し/更新/削除できるオブジェクトとみなすことができるようになります。

前置きはこのへんで
実際作ってみます

Railsに標準装備されているscaffoldジェネレータを使って作成しました。 rails generateスクリプトにscaffoldコマンドを渡すことで生成されるみたいです。

$ rails generate scaffold User name:string email:string

scaffoldコマンドの引数には、リソース名を単数形にしたもの (この場合はUser) を使用します。
オプションのname:stringとemail:stringがRDBMSでいうカラムみたいなものなのかな
あとidパラメータはRailsによって自動的に主キーとしてデータベースに追加されるみたいです。

するとこんな感じで作成されました!

invoke  active_record
      create    db/migrate/20140526163117_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  jbuilder_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    test_unit
      create      test/controllers/users_controller_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      create        test/helpers/users_helper_test.rb
      invoke    jbuilder
       exist      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

続いてRakeを使用してデータベースをマイグレート (migrate) する必要があるみたいなので

$ bundle exec rake db:migrate
==  CreateUsers: migrating =================================
-- create_table(:users)
   -> 0.0017s
==  CreateUsers: migrated (0.0018s) ========================

ここでbundle execを使っているのはGem fileに対応するrakeが確実に実行されるようです。 ちなみにこのrakeはunixでいうmakeみたいな感じみたいです。

ここで
http://localhost:3000/usersにアクセスすると

f:id:issey1022:20140527021614p:plain

これが表示されるみたいなんだけど

僕のはこれw

f:id:issey1022:20140527021020j:plain

エラーをみてみるとrails:rootのアクセス先が違う! 以前作った方に向いていたので
一旦プロセスを殺して、新規作成の方に行き再度起動

f:id:issey1022:20140527021614p:plain

※補足 ただ、いちいちローカルの rails サーバーを落として新しいサーバーを立ち上げるとかめんどくさいってとき
デフォルトの起動ポートを変更
通常はlocalhost:3000

require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge({
        :Port => 4000
      })
    end
  end
end

これをconfig/boot.rbに追記するとlocalhost:4000 で立ち上がります ちなみに今回だけならこれで立ち上がります

rails s --port 4000

補足でした

ここでnewページを表示してユーザーを作成します!

f:id:issey1022:20140527021043j:plain

こんな感じ

URLアクションはいろいろあるので参考までに↓ 拾ってきたやつだけど

f:id:issey1022:20140527022131p:plain

今日は以上ですw