「RailsによるアジャイルWebアプリケーション開発」11章まで読了
この章は、ユーザモデルの作成と、ユーザの作成、ログイン、一覧表示、削除などなど一連のユーザ管理システムの構築でした。
最初のころに作ったにっくき(?)adminコントローラが出てきますが、ここはproductsコントローラに読み替えて邁進しました。
というわけで自由課題。
前章のチェックアウトのコードを、2つのアクションではなく、1つのアクションを使うように作りかえてみましょう
checkoutアクションで注文内容を入力し、save_orderアクションで注文確定という流れでしたが、これをcheckoutにまとめるということのようです。
またも軟弱にも答え(http://pragprog.wikidot.com/pt-f-1)を先に見てしまいましたが、params[:order]の有無でどちらのページから来たかを判断できるので、これを元に処理を分岐するということのようです。
もちろん、save_orderアクションを呼んでいるところは、checkoutアクションが呼ばれるように修正します。
データベースに管理者が定義されていないときには、どのようなユーザ名でもログインできるようにしてみましょう。
こんな風にしてみたらうまくいきました。
if User.count == 0 user = User.create(:name => params[:name], :password => params[:password], :password_confirmation => params[:password]) else user = User.authenticate(params[:name], params[:password]) end
ユーザの件数(usersテーブルの件数)が0の場合はcreateして、それ以外の場合は今までの処理に流れるようにしました。あとはそのまま。
script/consoleを実際に使ってみましょう。
4ページほど前に、管理者がひとり残らずいなくなると・・・の中で、script/consoleを使ってユーザを追加する例が載ってますが、Rails2.0.2でも普通に出来ました。