Ruby on Rails チュートリアル 第2章をやってみた

Toyアプリケーション(Vagrant + CentOS7 + Rails 5.1.6です)

centos側

$ cd ディレクトリ移動
$ rails _5.1.6_ new toy_app

Toyアプリケーション用にgemファイルの修正(リスト2.1)

$ bundle install --without production

Bundler could not find compatible versions for gem “activesupport”:
In snapshot (Gemfile.lock):
activesupport (= 5.1.6.2)
省略….

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

エラーでてたので、

$ bundle update

gitで管理下に

$ git init 
$ git add -A
$ git commit -m "Initialize repository"

==bitbucketでrepositoryを作成

$ git remote add origin git@bitbucket.org:USERNAME/toy_app.git
$ git push -u origin master

文字表示できるか確認コントローラーとルーティングの設定
app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def hello
render html: "hello world"
end
end

config/routes.rb

Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'application#hello'
end

変更をコミットしてHerokuにpush

$ git commit -am "Add hello"
$ heroku create 
$ heroku rename 名前
$ git push heroku master

ユーザモデルとポスト(マイクロポスト)のモデルを設計する

ユーザ(users)id(integer), name(string), email(string)のテーブルをつくる
ポスト(microposts)id(integer), content(text), user_id(integer)

scaffoldで生成

$ rails generate scaffold User name:string email:string

(id は自動で主キーとして追加されるため、追加不要)

データベースのマイグレート

$ rails db:migrate

ユーザーページでユーザを追加してみる
http://rails-toy.vagrant.test/users

[URL][アクション][用途]
/users index (ユーザ一覧)
/users/1 show(ユーザの詳細)
/users/new new(新規ユーザ追加)
/users/1/edit edit (ユーザの編集)

ルーティングを修正して、rootでUserの一覧を表示

routes.rb
root 'users#index'
# root 'application#hello'

マイクロポストを生成する

$ rails generate scaffold Micropost content:text user_id:integer
$ rails db:migrate

ポストを追加してみる

ポストの文字数制限をする

app/models/micropost.rb
class Micropost < ApplicationRecord
validates :content, length: { maximum: 140 }
end

あれ、validatesが効かずにpostできてしまう。(未解決)

ユーザとマイクロポストの関連付け

app/models/user.rb

class User < ApplicationRecord
has_many :microposts
end

app/models/micropost.rb

class Micropost < ApplicationRecord
belongs_to :user
validates :content, length: { maximum: 140 }
end

デプロイ

$ git status
$ git add -A
$ git commit -m "Fin toy app"
$ git push
$ git push heroku
$ heroku run rails db:migrate
$ heroku open

コメント

タイトルとURLをコピーしました