Railsチュートリアル 第2章 2.3 Micropostsリソース
2.3 Micropostsリソース
・Usersリソースと同様に、Micropostリソースをscaffoldで作る。
・Micropostリソースは、以下のようなものだった。
id | integer | ポストID |
---|---|---|
text | string | ポストの内容 |
user_id | integer | 投稿したユーザーのID |
2.3.1 マイクロポストを探検する
・Usersリソース同様に、scaffoldコマンドを使ってMicropostsリソースを作る。
rails generate scaffold Micropost content:text user_id:integer
・migrationも忘れずに。
rails db:migrate
・MicropostsリソースはUsersリソースととても似ていて、micropost_controller.rb、micropost.rbを持つ。
2.3.2 マイクロポストをマイクロにする
・投稿に140字の制限を設ける。Railsのvalidatesを使う。指定したメンバ変数に制限を設けることができる。
class Micropost < ApplicationRecord validates :content, length: { maximum: 140 } end
2.3.3 ユーザーはたくさんマイクロポストを持っている
・Railsにおいては、異なるデータモデルの関係性をかんたんに実現することができる。今回の場合、Userは複数のMicropostを持ち(has_many)、Micropostは一人のUserに帰属する(belongs_to)、という関係である。UserクラスとMicropostクラスを以下のように編集する。
class User < ApplicationRecord has_many :microposts end
class Micropost < ApplicationRecord belongs_to :user validates :content, length: { maximum: 140 } end
・rails consoleコマンドを使って、アプリケーションを対話的に操作することができる。メンバ変数などを指定すると、そいつの内容とかが見れる。
2.3.4 継承の階層
・UserクラスとMicropostクラスはいずれもApplicationRecordクラスというRailsのクラスを継承している。また、ApplicationRecordはActiveRecord::Baseという基本クラス(ActiveRedordというモジュールのBaseクラス)を継承している。ActiveRecordは平たく言うとRubyとデータベースなどの翻訳機で、本当だったらSQLとかで書かないとデータベースと更新できないところを、Rubyの書き方でいいようにしてくれてるやつ。
qiita.com
・UsersControllerクラスとMicropostsControllerクラスも同様に、同じApplicationControllerクラスを継承している。また、ApplicationControllerクラスはActionController::Baseを継承している。
2.3.5 アプリケーションをデプロイする
・Github,HerokuにそれぞれPushする。
git push
・HerokuにPushしたあと、Herokuにはまだデータベースができていないので、migrationするのを忘れずに。
git push heroku heroku run rails db:migrate