Railsチュートリアル:13章(わからないとこメモです)


第13章ユーザーのマイクロポスト

13.1 Micropostモデル

親であるユーザーが破棄された場合には自動的に破棄されるようにします

はい。

13.1.1 基本的なモデル

Micropostモデルは、「特定のユーザーとマイクロポストを関連付けるuser_id属性」を持つ

このDB内の紐づけが肝だとおもい。
プロゲートのSQLでも軽くみたはず。


rails generate model Micropost content:text user:references

ポストのモデルを作成
注目はuser:references
これがあると

class Micropost < ApplicationRecord
   belongs_to :user
end

belong_toがついてくる。

references型を利用すると、自動的にインデックスと外部キー参照付きのuser_idカラムが追加されUserとMicropostを関連付けする下準備をしてくれます。

なるほど。

13.1.2 Micropostのバリデーション

13.1.3 User/Micropostの関連付け

UserモデルとMicropostモデルをそれぞれ更新して、関連付ける必要がある
Micropostモデルの方では、belongs_to :userというコードが必要になるのですが、これは リスト 13.10のマイグレーションによって自動的に生成されている
Userモデルの方では、has_many :micropostsと追加する必要があります。ここは自動的に生成されないので、手動で追加

なるほど。


class Micropost < ApplicationRecord
  belongs_to :user
  validates :user_id, presence: true
  validates :content, presence: true, length: { maximum: 140 }

13.1.4 マイクロポストを改良する

ふむ

13.2 マイクロポストを表示する

まあはい

13.2.1 マイクロポストの描画

ふむふむ

13.2.2 マイクロポストのサンプル

users = User.order(:created_at).take(6)
50.times do
  content = Faker::Lorem.sentence(5)
  users.each { |user| user.microposts.create!(content: content) }
end

上記を追加seedsに追加しようとするとcloud9で×マークがでる。
なんか足りないよ、と。

どうやら、このチュートリアルがかいてるendはeachにたいするもので
seedsファイル全体のendとは別らしい。たぶん。

で、

$ rails db:migrate:reset
$ rails db:seed

ここのseedは結構時間かかった。

久々にブラウザで確かめてみようとか思ってひらくと
ログインしてないのでマイクロポストが一覧で表示されるのかをみれない。

DBから落として、ログインすればいいやとか思って落とすと
パスワードが暗号化されててはいれない(当たり前だけど)

ならばと新規登録してみる。

ここでハッと気づいたのが、メール認証が必要である。

herokuにクレジット登録するのがいやでメール機能がオンになっておりません。

なので新規登録もできません。。。

終わった。。。チュートリアルの過去を探すしかない。。。

と、ここで、そういえばfixtureてきなやつをみればわかるのでは?と気づく。

michael:
  name: Michael Example
  email: michael@example.com
  password_digest: <%= User.digest('password') %>
  admin: true
  activated: true
  activated_at: <%= Time.zone.now %>

すみません、ここから紐解く実力はありません。。。

グーグルさんに聞いてみると同じ症状の人がいらっしゃいました。

友よ、、、

解決しないのでログインはあきらめて進みます。

と、おもったらここはログインしてなくともみれる場所でありました。

最後に
/users/1
をつければ見れます。

13.2.3 プロフィール画面のマイクロポストをテストする

13.3 マイクロポストを操作する

13.3.1 マイクロポストのアクセス制御

13.3.2 マイクロポストを作成する

13.3.3 フィードの原型

ユーザーがフィードを持つので、feedメソッドはUserモデルで作るのが自然

13.3.4 マイクロポストを削除する

13.3.5 フィード画面のマイクロポストをテストする

13.4 マイクロポストの画像投稿

13.4.2 画像の検証

ファイルサイズに対するバリデーションはRailsの既存のオプション (presenceやlengthなど) にはありません。したがって、今回は手動でpicture_sizeという独自のバリデーションを定義

13.4.3 画像のリサイズ

13.4.4 本番環境での画像アップロード

世の中には多くのクラウドストレージサービスがありますが、今回は有名で信頼性も高いアマゾンの「Simple Storage Service (S3)25 」を使います。セットアップの手順は次のとおりです。

(1.2.1でAWSアカウントを作成していない場合) Amazon Web Servicesアカウントにサインアップする
AWS Identity and Access Management (IAM)でユーザーを作成し、AccessキーとSecretキーをメモする
AWS ConsoleからS3 bucketを作成し (bucketの名前はなんでも大丈夫です)、2.で作成したユーザーに対してRead権限とWrite権限を付与する

↑ここはとばす

あまり書くこともなかった。。。
理解できてなさ過ぎて。。。二周目に期待。