Top > Ruby on Railsあれこれ > 2-2 会員登録をしよう

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
CREATE TABLE `rails`.`members` (
  `name` VARCHAR(16) NOT NULL,
  `mail` VARCHAR(255) NOT NULL,
  `password` VARCHAR(32) NOT NULL,
  `address` VARCHAR(255) NOT NULL,
  `tel` VARCHAR(14) NOT NULL,
  `birth` DATE NOT NULL,
  PRIMARY KEY (`mail`)
)
ENGINE = InnoDB;
 
CREATE TABLE `rails`.`roles` (
  `mail` VARCHAR(255) NOT NULL,
  `role` VARCHAR(32) NOT NULL,
  INDEX `Index_1`(`mail`)
)
ENGINE = InnoDB;

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
{Eclipseのワークスペースフォルダ}\ror-supersample2-2>ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/validates_date_time
+ ./CHANGELOG
+ ./MIT-LICENSE
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./lib/multiparameter_attributes.rb
+ ./lib/parser.rb
+ ./lib/validates_date_time.rb
+ ./test/abstract_unit.rb
+ ./test/database.yml
+ ./test/date_test.rb
+ ./test/date_time_test.rb
+ ./test/fixtures/people.yml
+ ./test/fixtures/person.rb
+ ./test/schema.rb
+ ./test/time_test.rb

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
{Eclipseのワークスペースフォルダ}\ror-supersample2-2>ruby script/plugin install http://validates-as-phone.googlecode.com/svn/trunk/
+ ./README
+ ./init.rb
+ ./lib/validates_as_phone.rb
+ ./test/database.yml
+ ./test/debug.log
+ ./test/fixtures/person.rb
+ ./test/schema.rb
+ ./test/test_helper.rb
+ ./test/validates_as_phone_test.rb

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
{Eclipseのワークスペースフォルダ}\ror-supersample2-2>ruby script/plugin install http://code.dunae.ca/validates_email_format_of/
+ ./tags/1.0/CHANGELOG
+ ./tags/1.0/MIT-LICENSE
+ ./tags/1.0/README
+ ./tags/1.0/init.rb
+ ./tags/1.0/lib/validates_email_format_of.rb
+ ./tags/1.0/rakefile
+ ./tags/1.0/test/database.yml
+ ./tags/1.0/test/fixtures/people.yml
+ ./tags/1.0/test/fixtures/person.rb
+ ./tags/1.0/test/schema.rb
+ ./tags/1.0/test/test_helper.rb
+ ./tags/1.0/test/validates_email_format_of_test.rb
+ ./tags/1.1/CHANGELOG
+ ./tags/1.1/MIT-LICENSE
+ ./tags/1.1/README
+ ./tags/1.1/init.rb
+ ./tags/1.1/lib/validates_email_format_of.rb
+ ./tags/1.1/rakefile
+ ./tags/1.1/test/database.yml
+ ./tags/1.1/test/fixtures/people.yml
+ ./tags/1.1/test/fixtures/person.rb
+ ./tags/1.1/test/schema.rb
+ ./tags/1.1/test/test_helper.rb
+ ./tags/1.1/test/validates_email_format_of_test.rb
+ ./tags/1.2/CHANGELOG
+ ./tags/1.2/MIT-LICENSE
+ ./tags/1.2/README
+ ./tags/1.2/init.rb
+ ./tags/1.2/lib/validates_email_format_of.rb
+ ./tags/1.2/rakefile
+ ./tags/1.2/test/database.yml
+ ./tags/1.2/test/fixtures/people.yml
+ ./tags/1.2/test/fixtures/person.rb
+ ./tags/1.2/test/schema.rb
+ ./tags/1.2/test/test_helper.rb
+ ./tags/1.2/test/validates_email_format_of_test.rb
+ ./tags/1.2.1/CHANGELOG
+ ./tags/1.2.1/MIT-LICENSE
+ ./tags/1.2.1/README
+ ./tags/1.2.1/init.rb
+ ./tags/1.2.1/lib/validates_email_format_of.rb
+ ./tags/1.2.1/rakefile
+ ./tags/1.2.1/test/database.yml
+ ./tags/1.2.1/test/fixtures/people.yml
+ ./tags/1.2.1/test/fixtures/person.rb
+ ./tags/1.2.1/test/schema.rb
+ ./tags/1.2.1/test/test_helper.rb
+ ./tags/1.2.1/test/validates_email_format_of_test.rb
+ ./trunk/CHANGELOG
+ ./trunk/MIT-LICENSE
+ ./trunk/README
+ ./trunk/init.rb
+ ./trunk/lib/validates_email_format_of.rb
+ ./trunk/rakefile
+ ./trunk/test/database.yml
+ ./trunk/test/fixtures/people.yml
+ ./trunk/test/fixtures/person.rb
+ ./trunk/test/schema.rb
+ ./trunk/test/test_helper.rb
+ ./trunk/test/validates_email_format_of_test.rb


  0
  1
  2
  3
  4
  5
  6
development:
  adapter: mysql
  encoding: utf8
  database: rails
  username: rails
  password: rails
  host: localhost

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>2-2のサンプル<br>データベースの更新</h1>
<%= error_messages_for 'members' %>
<% form_tag :action => 'create' do %>
  <table>
    <tr>
      <td>氏名</td>
      <td><%= text_field 'member', 'name'  %></td>
    </tr>
    <tr>
      <td>メールアドレス</td>
      <td><%= text_field 'member', 'mail'  %></td>
    </tr>
    <tr>
      <td>パスワード(今回の例ではMD5で暗号化しています)</td>
      <td><%= password_field 'member', 'password' %></td>
    </tr>
    <tr>
      <td>住所</td>
      <td><%= text_field 'member', 'address'  %></td>
    </tr>
    <tr>
      <td>電話番号(99-9999-9999)</td>
      <td><%= text_field 'member', 'tel'  %></td>
    </tr>
    <tr>
      <td>生年月日(YYYY-MM-DDでお願いします。1980-03-02)</td>
      <td><%= text_field 'member', 'birth'  %></td>
    </tr>
    <tr>
      <td>
        <%= submit_tag "Create" %>
      </td>
    </tr>
  </table>
<% end %>
</body>
</html>

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
class MembersController < ApplicationController
 
  #会員情報入力画面の表示
  def index
    @member = Member.new
    render :action => 'memberEntry.html.erb'
  end
 
  #会員追加メソッド
  def create
    begin
      #トランザクション開始
      #トランザクション内から例外をスローすると自動的にロールバックされます。
      ActiveRecord::Base.transaction {
        
        #会員テーブルに追加
        @member = Member.new(params[:member])
        if !@member.save
          raise ActiveRecord::RecordInvalid::new(@member)
        end
        
        #役割テーブルに追加
        @role = Role.new
        @role.mail = params[:member][:mail]
        @role.role = "user"
        if !@role.save
          raise ActiveRecord::RecordInvalid::new(@role)
        end
      }
      #テーブル追加オールOK
      render :action => 'complete.html.erb'
    rescue => ex
        #例外発生時の処理を記述します。
        render :text => ex
    end
  end
  
end

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
require 'digest/md5'
 
class Member < ActiveRecord::Base
  
  #saveメソッド処理前に自動的に呼び出されるメソッドを登録します。
  before_save :hashed_password
  
  #必須チェック
  validates_presence_of :name, :mail, :password, :address, :tel, :birth,
                        :message => "を入力して下さい。"
  
  #日付形式チェック
  validates_date :birth
  
  #電話形式チェック
  validates_as_phone :tel
  
  #EMAIL形式チェック
  validates_email_format_of :mail
  
  #EMAIL重複チェック
  validates_uniqueness_of :mail, :message => "はすでに登録済みです。"
  
  private
    #DBに挿入する前にパスワードをMD5ダイジェスト化します。
    def hashed_password
      self.password = Digest::MD5.hexdigest(self.password)
    end
end
  0
  1
class Role < ActiveRecord::Base
end

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>2-2のサンプル<br>データベースの更新</h1>
<%=h params[:member][:name] %>さん<br>
ご登録ありがとうございました。
</body>
</html>

添付ファイル: fileror-sample2-2_6.jpg 275件 [詳細] fileror-sample2-2_7.jpg 255件 [詳細] fileror-sample2-2_5.jpg 263件 [詳細] fileror-sample2-2_4.jpg 250件 [詳細] fileror-sample2-2_3.jpg 243件 [詳細] fileror-sample2-2_2.jpg 264件 [詳細] fileror-sample2-2_1.jpg 257件 [詳細]

リロード   新規 編集 凍結解除 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-08-08 (水) 23:25:33 (2925d)