【146日目】【1日20分のRailsチュートリアル】【第11章】UserモデルとMicropostモデルの関連付け
今日は「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 マイクロポストを改良する」から。