ruby-日記


ちょうどrubyを学ぶことを始めて最近ruby on railsのフレームワークで1つの简単な小さいホームページをして、最も简単なのは登录と登录の问题で、见たところ简単な机能は私のような初心者に対しても迷うことができるかもしれなくて、ネット上で多くのオープンソースの资料が私达に学ぶことができます.
まず、私たちのviewに登録して登録ページsinupを作成します.html.Erbは、対応するコントローラとルーティング、およびデータベースフォームを確立します.
rails g controller users signup
rails g model user name:string email:string password_digest:string

パスワードのフィールドはこのように暗号化されたフィールドです結局管理者でも明文のパスワードが暗号化されたパスワードがpassword_に保存されているのを見ることはできないと思います.digestフィールドもちろん最后に忘れないで
 
 
rake db:migrate

データベースの移行
 
 
get "signup" => "users#signup", :as => "signup"

 
 
対応するルーティングusers対応viewのフォルダの名前を追加
ユーザーへcontroller.rb中
 
def signup
  @user = User.new
end

これらの内容を追加
 
ルーティングにリソースルーティングを追加
 
resources :users, only: [:create]

対応する登録ページに金の2つのフォームを追加します
 
 
<div class="signup-form-container clearfix">
  <div class="signup-form">
    <%= form_for @user do |f| %>
        <dl class="form">
          <dt><%= f.label :name, "   " %></dt>
          <dd><%= f.text_field :name %></dd>
        </dl>
        <dl class="form">
          <dt><%= f.label :email %></dt>
          <dd><%= f.text_field :email %></dd>
        </dl>
        <dl class="form">
          <dt><%= f.label :password, "  " %></dt>
          <dd><%= f.password_field :password %></dd>
        </dl>
        <dl class="form">
          <dt><%= f.label :password_confirmation, "      " %></dt>
          <dd><%= f.password_field :password_confirmation %></dd>
        </dl>
        <p><%= f.submit "  ", :class => "signup-button btn btn-primary" %></p>
    <% end %>
  </div>
</div>

さらにスタイルapp/assets/stylesheets/sections/usersを追加します.css.scss
 
 
.signup-form-container, .login-form-container{
  width: 670px;
  margin: 50px auto;
  border:1px solid #ddd;
  padding: 2em;
  .signup-form, .login-form {
    width: 100%;
  }
  .signup-button, .login-button {
    padding: 13px;
    margin-top: 15px;
    width: 100%;
  }
}

ここで止まって、このページを見て、バックグラウンドにどんなコードがあるか考えてみましょう.パスワードとパスワードの確認項目が一致し、パスワードがデータベースに格納されている場合は暗号化などのタスクを手書きで行うのは面倒ですが、Railsにはhas_が内蔵されています.secure_passwordという方法.
 
has_の使用secure_password
has_を開くsecure_passwordのドキュメントは、使用するには2つの前提条件があることがわかります.1つ目は、GemfileにBcryptを追加することです.2つ目は、usersという表にpassword_があることです.digestというフィールドは、この前に生成されました.
ユーザーへrbで、追加
 
rails c
u = User.first
 has_secure_password

/signupのフォームに内容を記入すると、users#createが見つからないのでusers_controller.rbで、追加
ef create
  user = User.new(user_params)
  user.save
  redirect_to :root
end

private
  def user_params
    params.require(:user).permit!
  end

これで登録に成功しました.データベースで確認
 
rails c
u = User.first

パスワードは暗号化された形式で保存されていることがわかります.
これにより,ユーザ登録が成功したと考えられる.