2010-01-26 2 views
0

Я использую Authlogic с аддоном Authlogic-openid (I gem установлен ruby- openid и скрипт/плагин установите git: //github.com/rails/open_id_authentication.git) и получите две ошибки.Authlogic openid: получение неопределенного метода openid_identifier? ошибка в функциональном тесте

Сначала при запуске функционального теста я получаю неопределенный метод openid_identifier? сообщение в строке в файле new.html.erb, когда запускает UserControllerTest. Линия:

<% if @user.openid_identifier? %> 

При запуске сценария/консоли можно получить доступ к этому методу без проблемы.

Во-вторых, когда тестирование функциональности OpenId и регистрации нового пользователя моего приложения с использованием OpenID и с помощью моего Blogspot счета для , что я получаю следующее в моем файле журнала:

Generated checkid_setup request to http://www.blogger.com/openid-server.g 
with assocication ... 
Redirected to http://www.blogger.com/openid-server.g?openid.assoc_handle=... 
NoMethodError (You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.call): 
    app/controllers/users_controller.rb:44:in `create' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' 

код в users_controller прямо вперед:

def create 
    respond_to do |format| 
     @user.save do |result| 
       if result 
       flash[:notice] = t('Thanks for signing up!') 
       format.html { redirect_to :action => 'index' } 
       format.xml { render :xml => @user, :status => :created, :location => @user } 
       else 
       format.html { render :action => "new" } 
       format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
       end 
     end 
    end 
    end 

линия дает ошибку будучи @ user.save сделать | результат | ...

Я чувствую, что мне не хватает чего-то довольно элементарного, но я слишком долго смотрел на , потому что я не могу найти, что это такое. Я проверил код в эпизодах Railscasts 160 и 170 и проект GitHub кости , но ничего не нашел.

Спасибо за вашу помощь, USR

ответ

0

уверен, что @user установлен ли вы? Мне кажется, что проблема в том, что @user равен нулю.

+0

Да, я использую декларативную авторизацию и линии filter_resource_access находится в верхней части users_controller.rb. Даже если я добавлю @user = User.new (params [: user]) перед сохранением я получаю ту же ошибку. Я думал, что это может быть тот факт, что я использую blogger как провайдер openid, но если я использую openid.org, я все равно получаю ту же ошибку. –

1

Проблема заключается в том, что одновременно использовались плагины authlogic_oauth и authlogic_openid. Это означает, что метод сохранения на пользователе будет обрабатываться кодом openid, установленным в oauth-коде.

Возможно, библиотека authlogic_rpx может успешно сочетать эти два метода, мне нужно проверить это все еще.