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事前に