心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。10章。

   


第10章ユーザーのマイクロポスト、です。

has_many、belongs_toを使ってデータの1:nを実装します。
ブランチ切ります。
git checkout -b user-microposts

10.1Micropostモデル、です。
10.1.1基本的なモデル、です。

仕様

user_has_many_microposts
ユーザーに複数のポストがひもづけられています。ポストが属するのは1ユーザーだけです。
user:micropostは1:nの関係です。

マイクロポストのテストを書く

今度こそrails gする前にテスト書いてみます。
micropostオブジェクトが content属性とuser_id属性を持っていることを確認するテスト、とのこと。

リスト10.2 最初のMicropost spec。
spec/models/micropost_spec.rb

require 'spec_helper'

describe Micropost do

let(:user) { FactoryGirl.create(:user) }
before { @micropost = user.microposts.build(content: "Lorem ipsum") }

  subject { @micropost }

  it { should respond_to(:content) }
  it { should respond_to(:user_id) }
end

リスト10.6 ユーザーのmicroposts属性に対するテスト。
spec/models/user_spec.rb

require 'spec_helper'

describe User do

  before do
    @user = User.new(name: "Example User", email: "user@example.com",
                     password: "foobar", password_confirmation: "foobar")
  end

  subject { @user }
略
  it { should respond_to(:admin) }
  it { should respond_to(:microposts) }
略
end

この段階ではMicropost (NameError)でテストになりません。

Micropost作る

rails g model Micropost content:string user_id:integer

bundle exec rake db:migrate
bundle exec rake test:prepare

テストはまだNameErrorです。

MicropostとUsetひも付け

リスト10.7 マイクロポストがユーザーに所属する (belongs_to) 関連付け。
app/models/micropost.rb

class Micropost < ActiveRecord::Base
  belongs_to :user
  validates :user_id, presence: true
end

リスト10.8 ユーザーがマイクロポストを複数所有する (has_many) 関連付け。
app/models/user.rb

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

これでテストにはパスします。
いったんコミットします。次は
10.1.4マイクロポストを改良する
です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

Rubyの聖地、松江でRailsGirls Matsueに参加しました

旧暦神在月にRubyイベントに参加したい!と思ったところ、狙ったようにRubyW …

no image
RailsTutorial4.0を高速で復習する。5.6章。演習3問目。

5章最後の演習、3問目です。 リスト5.38に示すように、元のヘルパーメソッドに …

no image
RailsTutorial4.0を高速で復習する。終わりました。

作りたいサービスがあってコーディング開始していたのですが、もう1回振り返り学習し …

no image
@で始まるのが インスタンス変数

@ で始まるのが インスタンス変数 大文字で始まるのが 定数 文法書のどこに書い …

no image
RailsTutorial4.0を高速で復習する。6.3.3章。

6.3.3ユーザー認証、です。 新規ユーザー登録のときは入力で、:passwor …

no image
RailsTutorial4.0を高速で復習する。9.3章。

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …

no image
RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。 …

no image
RailsTutorial4.0を高速で復習する。3章。

巷にRails4本がなく、Rails3本をRails4でやってみようとしたところ …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

no image
RailsTutorial4.0を高速で復習する。8.1.3章。

8.1.3サインインのフォーム、です。 ログイン画面を作る 入力フォームをfor …