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