我不得不覆盖create方法的注册控制器,所以现在当用户注册它时,在创建帐户后不再自动签名,但我想保持这种行为。
目前我的create方法如下:
def create
@user = User.new
@user.attributes = params[:user]
if cookies[:invcode]
@user.inv_code = cookies[:invcode]
cookies.delete :invcode
end
if @user.save
redirect_to :root
end
end
答案 0 :(得分:3)
如果您使用的方法类似于sign_in @user
或类似Devise的sign_in_and_redirect
,则可以在create方法的@ user.save块中使用它。
答案 1 :(得分:0)
你在使用Devise吗?如果是的话,
if @user.save
sign_in_and_redirect @user, event: :authentication
end
或者更好的是,只需复制Devises'registration controller中的一些代码。
# POST /resource
def create
build_resource(sign_up_params)
if resource.save
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_navigational_format?
sign_up(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end