2

これは CouchDB 固有のものではありませんが、私が使用しているライブラリ. Rubyでcouchrest_modelを使用して、以下のUserようなモデルを作成しています:

class User < CouchRest::Model::Base
  use_database 'sample'
  property :_id, String
  property :email, String
  # property :password
  timestamps!
end

ここにパスワードを保存することと混同しています。BCrypt を使用したいのですが、次のようなことをすると:

class User < CouchRest::Model::Base
  include BCrypt

  use_database 'sample'
  property :_id, String
  property :email, String
  property :password, BCryptHash

  timestamps!
end

User::BCryptHashそれは初期化されていない定数だと言われます。もちろん、bcrypt事前にライブラリが必要です。その BCrypt の問題を解決するのを手伝ってもらえますか、またはパスワードを CouchDB に保存する別の方法を提案してもらえますか? パスワードのハッシュについて調べましたが、これを実装する方法がわかりません。

4

1 に答える 1

1
require 'couchrest_model'

class User < CouchRest::Model::Base
  include ActiveModel::SecurePassword

  use_database 'sample'
  has_secure_password

  property :username, String
  property :email, String
  property :password_digest, String

  timestamps!

  design { view :by_email }
end

User.create(:username => 'rafalchmiel', :email => 'hi@rafalchmiel.com', :password => 'password', :password_confirmation => 'password')
User.create(:username => 'bar', :email => 'hi@bar.com', :password => 'password213', :password_confirmation => 'password213')
User.create(:username => 'foo', :email => 'hi@foo.com', :password => 'password12111', :password_confirmation => 'password12111')

なぜこれが機能するのかについての詳細は、この GitHub Issueを参照してください。

于 2013-11-24T09:57:04.517 に答える