rails g scaffold User name:string password_digest:string
rake db:migrate
ここまではいつもどおりです。
models/user.rb
class User > Activerecord::Base
validates :name, presence: true, uniqueness: true
has_secure_password
end
controllers/users_controller.rb
def index
@users = User.order(:name)
...
end
Gem::LoadError in UsersController#new
bcrypt-ruby is not part of the bundle. Add it to Gemfile.
やはりエラーきましたねw
どうやらRails3.1以降になってからエラーがでるようです。
そこで
gem install bcrypt-ruby
gemfileに言われるがままに、
gem 'bcrypt-ruby' を追加
bundle install
サーバー再起動で無事認証画面が表示されました。
=============================================
has_secure_password関連で
password_confirmを追加した際に、
<div class="field"><%= f.label :password_confirmation, "確認" %><br /><%= f.password_field :password_confirmation, size: 40 %></div>
can't mess assignが出たのでこの対処法も。
どこを確認しても間違ってないんです。これに対して、has_secure_passwordが
勝手にpasswordとpassword_confirmが違う場合にエラーになるよう設定してくれます。(もちろんエラー用文言は書く必要があります)
そうです、attr_accesibleにpassword_confirmationを追加しましょう。
attr_accessible :name, :password, :password_confirmationこうなります。解決です。