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

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

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

   


10.3マイクロポストを操作する、です。

仕様の理解

ポストはユーザーだけが投稿できる
ログイン後のプロファイルページに投稿欄がある

10.3.1アクセス制御、です。

テストを書く

ルート作成より先にテストを書いておきます。

リスト10.23 マイクロポスト用のアクセス制御テスト。
spec/requests/authentication_pages_spec.rb

require 'spec_helper'

describe "Authentication" do
略
  describe "authorization" do

    describe "for non-signed-in users" do
      let(:user) { FactoryGirl.create(:user) }
略
      describe "in the Microposts controller" do

        describe "submitting to the create action" do
          before { post microposts_path }
          specify { expect(response).to redirect_to(signin_path) }
        end

        describe "submitting to the destroy action" do
          before { delete micropost_path(FactoryGirl.create(:micropost)) }
          specify { expect(response).to redirect_to(signin_path) }
        end
      end
略
    end
  end
end

ルートを作る

プロファイルページに投稿欄を作るのでnewアクションは不要です。

リスト10.22 Micropostsリソース用のルーティング。
config/routes.rb

SampleApp::Application.routes.draw do
  resources :users
  resources :sessions,   only: [:new, :create, :destroy]
  resources :microposts, only: [:create, :destroy]
略
end

ログイン機能のリファクタリング

app/controllers/users_controller.rbにあるsigned_in_userをmicropostも使用できるように、セッッションヘルパーに移動させます。

リスト10.24 signed_in_userメソッドをセッッションヘルパーに移動する。
app/helpers/sessions_helper.rb

module SessionsHelper
略
  def current_user?(user)
    user == current_user
  end

  def signed_in_user
    unless signed_in?
      store_location
      redirect_to signin_url, notice: "Please sign in."
    end
  end
略
end

リスト10.25 Micropostsコントローラのアクションに認証を追加する。
app/controllers/microposts_controller.rb

class MicropostsController < ApplicationController
  before_action :signed_in_user

  def create
  end

  def destroy
  end
end

テストにはパスします。いったんコミットし、次は
10.3.2マイクロポストを作成する
です。

 - テクニカル ,

Message

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

  関連記事

HerokuにRailsアプリをdeployする

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

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

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

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

4.2文字列(string)とメソッド、です。 ここからはrubyの文法について …

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

6.2.4フォーマットを検証する です。 メールアドレスは文字数制限だけじゃだめ …

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

7.3ユーザー登録失敗、です。 ここでは、エラーメッセージの表示を実装します。 …

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

6.2.5一意性を検証する、です。メールアドレスをIDとして使うため(でなくとも …

Eclipse CDTインストールでCould not find

さいたまスーパーアリーナで全スサノオ使い果たし力尽きてはや1ヶ月と1週間。世の中 …

格安で真央ごもりする浅田真央システム完成

さいたまスーパーアリーナでの世界選手権で、浅田真央ちゃんのショートプログラム世界 …

no image
RailsTutorial4.0を高速で復習する。5.4.2章の途中から。

リスト5.35 ボタンをユーザー登録ページにリンクする、です。 リンクを貼る系は …

Ruby on Railsを4.1.0にバージョンアップする

真央ロス真央廃を超えた腐まお状態な1ヶ月1週間、まるで娘が嫁に行った父親のごとし …