0

User モデルで has_secure_password を使用しています。ユーザーが oauth 経由でサインアップした場合、password_digest 文字列をダミーの値に設定したいと思います。現在、私はfacebookのみを行っており、ユーザーをfacebook_idで保存しています。次の同様のロジックを追加したいと思います。

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :facebook_id
  after_create :update_password_digest_if_from_facebook

  def update_password_digest_if_from_facebook
    logger.info "here within update_password_digest_if_from_facebook" # this gets called
    if self.facebook_id # not seen?
      self.password_digest='oauth-account'
      self.save  
    end
    logger.info "there is a facebook_id" if self.facebook_id # this isn't called 
  end
  ...
end

ただし、update_password_digest_if_from_facebook の部分は正しく呼び出されていません。ここで自分自身にアクセスできますか?

これは確かに has_secure_password をバイパスするハックな方法ですが、self.facebook_id への呼び出しが実行されないのはなぜですか? この時点で自分自身にアクセスする必要があるようです。

thx事前に

4

0 に答える 0