acts_as_authentic do |c|
c.openid_required_fields = [:email,"http://axschema.org/contact/email"]
end
將允許您需要電子郵件。我不確定如何要求其他字段,但也許檢查axschema.org頁面。用戶不需要填寫除OpenID提供商URL以外的任何內容。
結合登錄和註冊可能有這樣的事情(未測試的創建UserSessions控制器的方法,就像從authlogic教程的東西)來完成
def create
if User.find_by_openid_provider(params[:user_session]).nil? # or something like that
@user = User.new(params[:user_session])
if @user.save
redirect_to whatever_path
else
# handle error
end
else
@user_session = UserSession.new(params[:user_session])
if @user_session.save
add_message 'Login successful!'
redirect_to whatever_path
else
render :action => :new
end
end
end
多虧了你們兩個應允的。我最終做了什麼(以防其他人感興趣!)像正常處理openid登錄,但不是將新用戶保存到數據庫。相反,我將它們的信息存儲在會話變量var中,並在將它們添加到數據庫並將其登錄之前向他們詢問其餘信息。希望這有助於您! – Ryan 2009-08-16 03:57:33