多忙化したけど、RailsTutorial進めた
さて、ちょっと週末すら休めない日々が続いていて厳しいのですが、ちょこっと進めたので備忘録。
まずは、mhartl自身の作ったRails4向けのRailsTutorialのリポジトリを検索して発見。
railstutorial/sample_app_rails_4 · GitHub
ということで、このリポジトリをローカルにクローンして、users_controllerを比較しながら、すでに終わってる部分に関係しそうなあたりをぺぺっと書いてみた。
class UsersController < ApplicationController before_action :signed_in_user, only: [:index, :edit, :update, :destroy, :following, :followers] before_action :correct_user, only: [:edit, :update] before_action :admin_user, only: :destroy def index @users = User.paginate(page: params[:page]) end def show @user = User.find(params[:id]) end def new @user = User.new end def create @user = User.new(params[:user]) if @user.save sign_in @user # 保存の成功をここで扱う。 flash[:success] = "Welcome to the Sample App!" redirect_to @user else render 'new' end end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end def admin_user redirect_to(root_url) unless current_user.admin? end end
累積和・しゃくとり法ってそういうことだったのか!
いやぁ、私も挑戦したんですよ。POH vol.4!
でも、結婚はできたけど箱根までしか行けなかったんですよ。
あのほら、アルゴリズムってよくわかってなかったから…orz
そこまで勉強してる時間が、今のところないしね。
と残念に思っていたら、paizaの人が解説してくれました!
【累積和、しゃくとり法】初級者でも解るアルゴリズム図解 - paiza開発日誌
いろんなWebサイト見たんだけど全然わからなくて困ってました。
ほんと、この解説わかりやすい!
そういう計算の仕方があったのね! というすごく納得できた感じです。
あ、RailsTutorial? 進んでませんよ…
ほんと、15時間も仕事とかまじで何なのか全くわかりません。
来月上旬まではこんな感じが続きそうです。マジキチ…
よ、よくわからないぞ… paramsの中身はどこへ行った?!
さて、前回(というか昨日)の記事の通り、mhartlの作ったsample_appをgit cloneしてきました!
やっと落ち着いてRailsTutorialを進めたものの… - るびらな!
そして、cloneしたusers_controller.rbを見ました。ででーん!
class UsersController < ApplicationController before_filter :signed_in_user, only: [:index, :edit, :update, :destroy, :following, :followers] before_filter :correct_user, only: [:edit, :update] before_filter :admin_user, only: :destroy def index @users = User.paginate(page: params[:page]) end def show @user = User.find(params[:id]) @microposts = @user.microposts.paginate(page: params[:page]) end def new @user = User.new end def create @user = User.new(params[:user]) if @user.save sign_in @user flash[:success] = "Welcome to the Sample App!" redirect_to @user else render 'new' end end def edit end def update if @user.update_attributes(params[:user]) sign_in @user flash[:success] = "Profile updated" redirect_to @user else render 'edit' end end def destroy User.find(params[:id]).destroy flash[:success] = "User destroyed" redirect_to users_path end def following @title = "Following" @user = User.find(params[:id]) @users = @user.followed_users.paginate(page: params[:page]) render 'show_follow' end def followers @title = "Followers" @user = User.find(params[:id]) @users = @user.followers.paginate(page: params[:page]) render 'show_follow' end private def correct_user @user = User.find(params[:id]) redirect_to root_path unless current_user?(@user) end def admin_user redirect_to root_path unless current_user.admin? end end
なんだか見た記憶がないメソッドがいっぱい書いてある…editとかupdateとかdestroyとかなんとか。
でも、たぶん先の章で作る予定の部分なんだろうなぁ…と思いながら、全体を眺めてみるも…
これ、params[:id]の中身を定義してなくない?!
それでエラーはいてるのに、なんでこれでいいことになってるの?!
ってよくgemfileを見たら、これRails3.2で書かれてるのね。
Rails4.0以降ではparamsの内容をちゃんと定義してあげないといけなくなってるのに、それに対応してないんじゃね?っていう。
もうちょっとしばらくググりながら、理由を調べる必要がありそうです。
やっと落ち着いてRailsTutorialを進めたものの…
第7章に書かれている内容は全て進めてきたものの、相変わらずのActiveModel::ForbiddenAttributesErrorですよ…
なんでなんだろう??と思いますが、たぶんMCVのうちV以外の部分の問題、というかおそらくController周りの問題なんじゃないかと思っているので、ちょっと時間を見てmhartl自身が作ったリポジトリからソースを全部クローンしてきて、比較してみようと思います。
そのリポジトリはこちら。
mhartl/sample_app · GitHub
まじhartlイケメン。…あ、違う違う。見るとこ違いますよー。
明日またがんばる!
エラーが出たことが正しいってことに気づいてしまった…
今日は飲み会で今帰宅したんで、もちろんRailsTutorialを進めようってことにはならないんですけど、
軽く読み進めたら、エラーが出ていることが正しい状況だってことに気づいてしまいました。
すなわち、Michael Hartl的には、ぼくのいまの進捗状況ではエラーが出ていることが正しく、ここからエラーが出ない状態にしていこう、ということのようです。(ちょっとRailsTutorialの先の部分を読んでみた)
ということで、明日だか土曜だか日曜だか、まだ先が見えませんが、RailsTutorialを遠慮なく進めていきたいと思います。
ということで酔っぱらいはもう寝ます。
今日は特に進まなかった…
今日は仕事が山積みで、昼ご飯食べながら書類書いたりしつつがんばったけど、結局13時間くらい休憩なしで働いて、でも仕事が終わらないので諦めて帰宅。残業代? なにそれおいしいの? もらったことないですよ…
ということで、帰宅後ちょこっとRailsTutorialを進めようと思うも、問題が…
「ActiveModel::ForbiddenAttributesError」!!!!!
またお前か!!!
ということで、いろいろ調べながら頑張ったんですよ。
def member_params params.require(:member).permit(:number,:name,:Full_name,:gender,:birthday,:email,:administrator) end
こんな風に、パラメータの許容するパラメータ名とキー名をハッシュで渡してあげるといいよーとか、Rails3.x系からRails4.x系へのバージョンアップ時の注意が書いてある記事を見つけて試してみたりとか、いろいろね。
もうほんと、書き換えたり戻したりしまくってるので、git様様です。
まじgit神。
戻したいときの状態まで一発で戻ってくれるって、なんて便利なんだろうって感じです。
ということで、本筋は微塵も進んでません。
そして、明日も出張のため、微塵も進まない予感しかしません。
というか、100%進まないでしょう!(デデーン
ということで、また頑張れるのは週末のような気がします…!!