読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

Ruby on Rails勉強中

【9日目】【1日20分のRailsチュートリアル】Micropostsリソースの作成からToyアプリのデプロイまで

Ruby on Railsチュートリアル(第3版)

今日は「2.3 Micropostsリソース」から。

2.3 Micropostsリソース

Usersリソースの次はMicropostsリソース。

2.3.1 マイクロポストのページを探検する

Usersと同じようにMicropostsを作って

$ cd toy_app/
$ rails generate scaffold Micropost content:text user_id:integer

データベースのマイグレートもして

$ bundle exec rake db:migrate
== 20160720021926 CreateMicroposts: migrating =================================
-- create_table(:microposts)
   -> 0.0017s
== 20160720021926 CreateMicroposts: migrated (0.0019s) ========================

ローカルサーバー起動して

$ cd toy_app/
$ rails server -b $IP -p $PORT

動作確認環境できあがり。

micropostの新規作成画面は下記で表示できる。

https://<ローカルサーバーのアドレス>/microposts/new

f:id:kt_zoe:20160720123426p:plain

f:id:kt_zoe:20160720123702p:plain

適当に2つ作った一覧画面。

f:id:kt_zoe:20160720123712p:plain

2.3.2 マイクロポストをマイクロにする

その名に相応しくマイクロポストを140文字制限に。
クラスに制限を加える感じ、なのかな…?

app/models/micropost.rb

class Micropost < ActiveRecord::Base
  validates :content, length: { maximum: 140 }
end

これで140文字以上でmicropostを作成しようとしたらエラーが発生するようになりました。

f:id:kt_zoe:20160720123835p:plain

2.3.3 ユーザーとマイクロポストをhas_manyで関連づける

テーブルの関連付け、的な。
この辺他の言語ならどうするっけ、って考えたけどいいのは浮かんで来なかった。

UserデータモデルとMicropostデータモデルは1対多の関係。

app/models/user.rb

class User < ActiveRecord::Base
  has_many :microposts
end

app/models/micropost.rb

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

rails consoleで関連付けをターミナル上で確認できる。
便利なSQLコマンドみたいなものかなー。

$ rails console
Loading development environment (Rails 4.2.2)
2.3.0 :001 > 

2.3.4 継承の階層

オブジェクト指向プログラミングのお話。
クラスの継承について。

UsersコントローラもMicropostsコントローラも最終的にはActionController::Baseを継承してます、とのこと。

2.3.5 アプリケーションをデプロイする

それらしいアプリケーションが完成したようなのでGitにコミット、デプロイしておく。

Gitにコミット、Bitbucketにpushする。

$ git add -A
$ git commit -m "Finish toy app"
$ git push

pushできました。

f:id:kt_zoe:20160720124524p:plain

Herokuにもデプロイしておく。

$ git push heroku
$ heroku run rake db:migrate

デプロイできましたー。

f:id:kt_zoe:20160720124716p:plain

今日の作業時間は【27分】

次は「2.4 最後に」から。
そろそろ第2章が終わりそう。