心はいつも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を高速で復習する。3.3.2章。

3.3.2タイトルのテストをパスさせる。です。 ひとまず、静的ページをhtmlの …

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

演習1問目。 リスト6.20の、メールアドレスを小文字に変換するコードに対するテ …

もうあかん!Mac OSXのスクロールを逆にする

OSXのいつのバージョンからだっけ? スクロールの向きが突如逆になったんですよね …

HerokuにRailsアプリをdeployする

Railsプロジェクトというよりも、Railsアプリっていうほうが正んでしょうか …

つながらないWimaxの電波倍返し

googleが見つかりませんと言われると、対外電波切れ。 本日は多発しています。 …

no image
Macでアプリを強制終了

Macでアプリを強制終了したことは今までなかったのですが、どうにもftpソフトの …

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

6.3.5ユーザーを作成する、です。 userモデルはできています。開発用のデー …

Mac mini買いました。

Appleの新製品発表が近づいているというのに、Mac mini買ってしまいまし …

no image
RailsTutorial4.0を高速で復習する。3.5章。つづき。

3.5演習の2もんめをやります。 2.お気付きの方もいると思いますが、リスト3. …

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

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