心はいつも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

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

  関連記事

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

5.6章。演習2問目です。TDDにこだわり、あえてこの問題をするまで、ヘッダーや …

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

10.1.4マイクロポストを改良する、です。 has_many関連付けしたので、 …

SublimeText2をMacにインストールしてターミナルから起動できるようにする。

Windowsには秀丸っていう超優秀なテクストエディタがあって、無料でも使えるの …

no image
ToDoの管理方法

東大生はノートがきれいだとか、、 きれいに書いている暇があったら、頭に書いて覚え …

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

11.2.3「フォローしているユーザー」ページと「フォロワー」ページ、です。 仕 …

ブログをアプリを使ってiPhoneから更新

この前の投稿と、前の前の投稿はiphoneから行いました。ノートPCだとブログ投 …

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

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

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

3.3.3埋め込みRubyです。viewにrubyコードを埋め込んでtitleを …

no image
ブログは独自ドメインの方が強いかもね

すっかり月一ペースで更新するブログになってしまい焦ります。 震災直後に政権批判し …

Chromeでの文字化けを対処しました。

WordPressで自作テンプレを作ってみたのはよいものの、困った問題が2つ。 …