fog gemのinstall時に気をつけること

railsアプリケーションをbundle installしたら以下のようなメッセージが出た

------------------------------
Thank you for installing fog!

IMPORTANT NOTICE:
If there's a metagem available for your cloud provider, e.g. `fog-aws`,
you should be using it instead of requiring the full fog collection to avoid
unnecessary dependencies.

'fog' should be required explicitly only if:
- The provider you use doesn't yet have a metagem available.
- You require Ruby 1.9.3 support.
------------------------------


クラウドサービスを利用するためのライブラリfogについてのメッセージ
クラウドプロパイダーのmetagemがある場合は不要な依存関係を避けるべくそちらを使えという内容
クラウドプロパイダーのmetagemがない場合やruby1.9.3をサポートする場合はその限りでない


自分の場合はawsを使っているので

gem 'fog'

↓

gem 'fog-aws'


また、CarrierWave使ってる場合は

config.fog_provider = 'fog-aws'


を入れないとエラーになるかもです

Railsで登録の際に確認画面を挟むベスト・プラクティス

Railsで登録する際に確認画面を挟む実装って割りとよくありそうだし、実際自分でもやったことがあるけどイマイチ設計でしっくりきていなかった。また、ネットで出てくるそれ系の情報も微妙なものが多い気がする。そんな中、最近業務で作ったやつは他の人にFBもらいつつ良い感じにできたのではと思えたので共有する。

サンプルとしてユーザーの投稿画面があるとする
f:id:rakio1234:20170109223819p:plain:w300

このときpostする先をconfirmとかにする

post :confirm

バリデーションは確認画面に遷移する前にしときたい

  def confirm
    @user = User.new(user_params)

    return if @user.valid?

    render :new
  end

確認画面はこんな感じ
f:id:rakio1234:20170109230635p:plain:w300

確認画面なので間違っていたら前の画面に戻りたいし
入力した値はフォームにセットされている状態が望ましい
なのでhiddenで値を持っといてpostして戻るようにする

<%= form_for :user, url: new_users_path do |f| %>
  <%= f.hidden_field :name %>
  <%= f.hidden_field :email %>
  <%= f.hidden_field :sex %>
  <%= f.submit '入力画面へ戻る'%>
<% end %>

backメソッドで入力画面を呼び出す

  def back
    @user = User.new(user_params)

    render :new
  end

入力画面に戻った際のurlは users/back でなく users/newでありたい
なのでroutingを設定

post :new, path: :new, as: :new, action: :back

createとpathメソッド名がかぶって上手く動作しなくなるのでpathとasオプションを使う


確認あとの登録もhiddenから値を渡すようにする

<%= form_for :user, url: users_path do |f| %>
  <%= f.hidden_field :name %>
  <%= f.hidden_field :email %>
  <%= f.hidden_field :sex %>
  <%= f.submit '登録する'%>
<% end %>
  def create
    User.create!(user_params)

    render :complete
  end

f:id:rakio1234:20170109233026p:plain:w300

以上、変なとこあればFBください。

サンプルコードはこちら
github.com