ぞえの技術めも

Ruby on Rails勉強中

【146日目】【1日20分のRailsチュートリアル】【第11章】UserモデルとMicropostモデルの関連付け

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

今日は「11.1.3 User/Micropostの関連付け」から。

11.1.3 User/Micropostの関連付け

それぞれのマイクロポストは1人のユーザーと関連付けられ、それぞれのユーザーは (潜在的に) 複数のマイクロポストと関連付けられます。

ふむふむ。
UserとそのMicropostは1対多の関係、と。

これらのメソッドは使うと、紐付いているユーザーを通してマイクロポストを作成することができます (慣習的に正しい方法です)。

なんか不思議…!でもWebアプリケーションの作りには合ってる感じする。
前回の記事の「慣習的に間違っている」行はこのことらしい。

Micropostモデルの方では、belongs_to :userというコードが必要になるのですが、これは リスト11.1マイグレーションによって自動的に生成されているはずです (リスト11.9)。 一方、Userモデルの方では、has_many :micropostsと追加する必要があります。ここは自動的に生成されないので、手動で追加してください (リスト11.10)。

Micropostモデルは下記コードが元々生成されていることを確認。

app/models/micropost.rb

class Micropost < ActiveRecord::Base
  belongs_to :user
  :
end

Userモデルは自動的に生成されないので下記コードを追加。

app/models/user.rb

class User < ActiveRecord::Base
  has_many :microposts
  :
end

正しく関連付けができたら、リスト11.2のsetupメソッドを修正して、慣習的に正しくマイクロポストを作成してみます (リスト11.11)。

慣習的云々のコードを下記のように修正。

test/models/micropost_test.rb

    @micropost = @user.microposts.build(content: "Lorem ipsum")

テストも問題なし。

$ bundle exec rake test
52 tests, 221 assertions, 0 failures, 0 errors, 0 skips

今日の学習時間は【17分】

次は「11.1.4 マイクロポストを改良する」から。