• 締切済み

Rubyのパスワード変更画面について

rubyでのプログラム作成についての質問です。 パスワードの変更画面を作成したいのですが、作り方がよくわかりません。 会社でrubyを使用したプログラム作成を命じられましたが、社内にrubyを使用できる人がいないので質問できず困っています。 パスワードを変更する際に、パスワードの入力と確認用パスワードの入力をして、 双方が一致したらパスワードを変更、双方が不一致ならエラーメッセージを表示するようにしたいのですが、どうしたらいいのでしょうか。 現在、コントローラ内は以下のようになっています。 def new @user = User.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @user } end end def create @user = User.new(params[:user]) if(params[:password]!=params[:password_confirm]) ←ここでパスワードと確認用パスワードをチェック? flash[:notice] = 'パスワードが間違っています。' redirect_to:back return end respond_to do |format| if @user.save flash[:notice] = 'User was successfully created.' format.html { redirect_to(@user) } format.xml { render :xml => @user, :status => :created, :location => @user } else format.html { render :action => "new" } format.xml { render :xml => @user.errors, :status => :unprocessable_entity } end end end パスワードチェックをしているつもりはあるのですが、パスワードと確認用パスワードが違っていても現在は登録処理がされてしまいます。どうしたらいいのでしょうか。 大変困っているのでどなたか教えてください。

  • Ruby
  • 回答数1
  • ありがとう数11

みんなの回答

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.1

質問者さんのプログラムを見ると、Ruby on Railsを使用されているように見えますので、RoRであることを前提に回答します。 検証プログラムを自作する前に、RoRには、入力値を検証するヘルパーがあるので、今回の内容だと、validates_confirmation_of ヘルパーを使用するべきです。RoRは初心者にはほんとわかりづらいですが、validates_confirmation_ofヘルパの説明への直リンク載せておきます。 http://guides.rubyonrails.org/activerecord_validations_callbacks.html#validates-confirmation-of もしRoRでなかったらごめんなさい。。

nanasejp
質問者

お礼

ありがとうございます。 うまくやることができました!

関連するQ&A

  • rubyにてデータが変更されているかチェックしたいのですが

    現在Ruby on Railsでプログラムを作成していますが、よくわかりません。周りに聞ける人もいないので、よろしければどなたか教えてください。 ユーザーファイルのパスワードが変更されていたら changepassdateの内容を変更して、 変更されていなかったらchangepassdateの内容はそのままにするという内容のプログラムを作りたいです。 現在の内容だと、パスワードを変更しないでもchangepassdateの内容が変わってしまいます。 どうしたらこの問題が解決されるでしょうか? お手数おかけして申し訳ありませんが、どなたか教えてください。お願いします。 def update @user = User.find(params[:id]) if @user.password =! params[:password] t = DateTime.now @user.changepassdate = t + 1 end respond_to do |format| if @user.update_attributes(params[:user]) flash[:notice] = 'ユーザー情報が更新されました。' format.html { redirect_to(@user) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @user.errors, :status => :unprocessable_entity } end end end

  • Ruby on Rails に関する質問です。

    Ruby on Rails でデータベースにあいまい検索を複数条件でかけたいのですが、どのようにしたらよいのでしょうか?? def find   @bookinfo= Bookinfo.find(:all, :conditions => ["title like ?" => ["author like ?", "%#{params[:key]}%"]]) render :action => 'result.html.erb' end このような感じで複数のあいまい検索をかけたいのですがどのようにすればよいのか教えてください。 お願いします。SQLite3を使用しています。

    • ベストアンサー
    • Ruby
  • Ruby の 文法に困ってます。

    以下のようなソースの場合、to_sメソッドは何時呼ばれているのでしょうか。またどういう意味を成しているのでしょうか。 Ruby初心者のためご教授頂けないでしょうか。 よろしくお願いします。 class Vector   attr_accessor :x, :y   def initialize(x=0, y=0)     @x = x     @y = y   end   def length     Math::sqrt(@x ** 2 + @y ** 2)   end   def to_s      "(#{@x},#{@y})"   end   def <=> other     length <=> other.length   end end arr =[] arr << Vector.new(2,2) arr << Vector.new(3,2) arr << Vector.new arr.sort.each do |item|   puts item end 結果は以下になります。 (0,0) (2,2) (3,2)

    • ベストアンサー
    • Ruby
  • rubyにおけるPOSTされたデータの処理について

    言語はRubyです。 場面としては、railsにPOSTされたパラメータを受け取ってオブジェクトであるdetaを保存しているところです。 #case1 #params = {'a' => 1, 'b'=> 2 ,'c' => 3} #case2 #params = [{'a' => 1, 'b'=> 2 ,'c' => 3}, {'a' => 4, 'c' => 5}] if params.kind_of?(Array) params.length.times do |i| @deta.new if a = params[i]['a'] end if b = params[i]['b'] end if c = params[i]['c'] end @deta.save! end else @deta.new if a = params['a'] end if b = params['b'] end if c = params['c'] end @deta.save! end paramsが配列の可能性がある上、 paramsのハッシュである a, b, c のキーが毎回存在するかわからないので、 if文で例外がでないようにチェックしています。 自分で書いてて冗長な感じがして気持ち悪いです。 なにかよい方法があれば、教えてください。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Ruby

    #!/usr/local/bin/ruby class Foo def []=(x,y) print "Hello,",x,y,"!\n" end end bar = Foo.new bar["wor"] = "ld" 上記実行結果は Hello world! になるのですが、これが理解できません。 上手く説明してくれませんか?

  • Ruby初歩的な質問です。::はなんですか?

    ruby初心者です。 def ball_sakusei @ball = Array.new(BallMaru::BALL_KAZU){BallMaru.new(self)} end という行があったのですが、 BallMaru::BALLの部分の::はどういう意味ですか? 調べたけどよくわかりませんでした。 教えてくださいよろしくお願いします。

    • ベストアンサー
    • Ruby
  • Rubyの問題について質問です。

    Rubyの資格試験の勉強をしています。 分からない部分がありまして質問させていただきます。 class Employee attr_reader :id attr_accessor :name def initialize id , name @id = id @name = name end def to_s return "#{@id}:#{@name}" end def <=> other return self.id <=> other.id end employees = [ ] employees <<Employee.new("3","Tanaka") employees<<Employee.new("1","Suzuki") employees<<Employee.new("2","Sato") employee.sort! (質問) 「return self.id <=> other.id」この部分のselfとotherが何をさしているのか分かりません。3つめでインスタント化している「employees<<Employee.new("2","Sato")」のは、selfに入りそれまでに入れた値はotherに入っているのでしょうか? ご回答よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Rails コンボボックスの値の保持について(select_tag,c

    Rails コンボボックスの値の保持について(select_tag,collection_select) こんにちは。 Ruby on Railsで簡単な一覧検索画面を作成中の者です。 検索時の検索条件にコンボボックスを使用しており、検索後にコンボボックスの値を保持したいのですが、どうしてもできません。 どなたかお分かりの方がおられましたらご教授いただけないでしょうか。 下記、作成中のソースです。 Viewの検索条件部 <%- form_tag({:action => "search"},{:method=> "GET"}) do -%> <th class="U" align="left" width="10%"><label for="userNm">ユーザー名</label></th> <td width="90%"><%= text_field_tag :userNm, @userNm %></td>  <th class="U" align="left" width="10%"><label for="authCd">社員権限</label></th> <td width="90%">  <%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, :include_blank => true) %>  <td align="center"><%= submit_tag '検索' %></td> Controllerクラス: def search #画面パラメータから検索条件を作成 c = Condition.new # ユーザー名 userNm = "" if params[:userNm] userNm = params[:userNm] c.and "USER_NM", "LIKE", "%#{userNm}%" end # コンボボックスの値を取得 if params[:auth] && !params[:auth]["authCd"].blank? c.and "AUTH_CD", params[:auth]["authCd"] end # 検索処理 @users = User.paginate(:order => "USER_ID asc", :per_page => 5, :page => params[:page], :conditions => c.where) # 検索条件保持 @userNm = params[:userNm] # コンボボックスの値が保持できない if params[:auth] @auth_authCd = params[:auth]["authCd"] end respond_to do |format| format.html # index.html.erb format.xml { render :xml => @users } end end 見づらくて申し訳ありませんが、ざっと上記のようになっています。 もう1つの検索条件であるユーザー名(userNm)は保持できるのですが、コンボボックス(社員権限)の値が保持できません。 select_tagや、selectも使ってみたのですが、どちらも同じ結果でした。 コンボボックスの条件は、Authモデルから値を読込み、一番上は空白にする。というものです。 どのように記述すれば保持できるのか色々調べてみたのですが、結局分からず仕舞いでした。。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Ruby
  • Ruby

    class CDPlayer def playDisk(disk) puts "playing a "+disk+".\n"; end end class CDRadioCaset < CDPlayer def playRadio(channel) puts "playing a"+channel+"\n"; end def playCaset(tape) puts "playing a "+tape+"\n"; end end class DVDRPlayer < CDPlayer def playDisk(disk) puts "playing a"+disk+"\n" end def recoredDisk(disk) puts "recording to a "+ disk+". \n" end end cd=CDPlayer.new puts "CDPlayer. \n" cd.playDisk("CD") radio=CDRadioCaset.new puts "\n CDRadioCaset. \n" radio.playRadio("Radio") radio.playCaset("Caset") dvd=DVDRPlayer.new puts "\n DVDRPlayer.\n" dvd.playDisk(" CD or DVD") dvd.recoredDisk("disk") の意味わかる方、教えてください

  • rubyで単純なwebアプリに検索機能の追加をする場合

    ruby初心者です。 rubyで最も単純なwebアプリを作りながら勉強しています。 DBに数個のカラムを作り、登録、修正、削除、表示させるだけのものを作って勉強しているのですが・・・ 検索の機能を追加する場合、 scaffoldで作成したコントローラ(仮にxxxs)←最初に作ったモデルの複数形 xxxs_controller.rbに def search @xxx_pages, @ = paginate :xxxs, :per_page => 10, :conditions => ["★★★ LIKE ?", params[:xxx][:検索対象のカラム名] + '%' ] @keyword = params[:xxx][:検索対象のカラム名] render :action => 'list' end を加える事と、 _form.rhtmlに <%= start_form_tag :action => 'search' %> <!-- (1) --> <%= text_field :xxx, :検索対象のカラム名, :value => @keyword %> <%= submit_tag 'Search' %> <%= end_form_tag %> 付け加えるだけでよいのでしょうか??