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

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

  関連記事

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

8.2.1[このアカウント設定を保存する]、です。 RailsTutorial4 …

no image
wordpressはじめます

ブログを立ち上げるのは久しぶりです。 以前から、ブログメディアをやりたいと思って …

no image
「Follow me」バッジのつけ方。

ブログの横についている「Follow me」バッジ。いろんな方がつけているのを見 …

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

11.1.4フォローしているユーザー 、です。 followed_usersとf …

Provisioning fileが作成できない!

iPhoneアプリを公開するために、itunes connectでProvisi …

no image
railsのエラーメッセージを日本語化

message:で渡すエラーメッセージや、その他いろんな箇所を日本語化します。 …

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

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

パーフェクトRuby 2章Rubyの基礎 2-2 変数と定数

p47 2-2-1 ローカル変数 スコープは ・ブロック内 ・メソッド定義内 ・ …

no image
formatはどこから取ってくる?

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

MacにGUIのSQLite3クライアントを入れる。

ターミナルからコマンドたたけばいいだけですが、DBスキーマをちょっと確認したいと …