今日の課題
unless User.no_users_yet? || (@user && @user.is_admin?)
@page_title = "No signups"
@admin_email = User.find_admin.preference.admin_email
render :action => "nosignup", :layout => "login"
return
end
Userが登録されているにもかかわらず,admin以外のユーザが登録しようとしても失敗させるためのケース。
user = User.new(params['user'])
で,モデルUserのインスタンスを生成し,その次の評価で,作成するインスタンスのvalid性を評価している。
unless user.valid?
session['new_user'] = user
redirect_to :action => 'new'
return
end
validでないUserインスタンスならば,"/user/new" にリダイレクトさせて,その際にerror内容を表示させるのだろう。
first_user_signing_up = User.no_users_yet?
user.is_admin = true if first_user_signing_up
ここで,最初のuser登録かチェックしている。つまり,最初に登録されるユーザは必ずadmin権限を持つようになっている。
if user.save @user = User.authenticate(user.login, params['user']['password']) @user.create_preference @user.save session['user_id'] = @user.id if first_user_signing_up notify :notice, "Signup successful for user #{@user.login}." redirect_back_or_home end return最後に,新しく生成したインスタンスが保存できるのならば,redirect_back_or_home され,処理を終える。
おもしろい。このまま,tracks Applicationの実装を読み進めていこう。それと並行してRails applicationの試作を行ってみたい。
No comments:
Post a Comment