rails gema función español ejemplos cuál current_user create ruby-on-rails ruby devise rubygems

ruby-on-rails - gema - rails authentication



Cómo quitar/deshabilitar el registro desde el dispositivo (5)

Acabo de tener el mismo problema. Mi solución es una mezcla de estas respuestas:

Primer comentario / Eliminar el :registerable en user.rb

class User < ActiveRecord::Base devise :database_authenticatable, #:registerable, :recoverable, :rememberable, :trackable, :validatable end routes.rb class User < ActiveRecord::Base devise :database_authenticatable, #:registerable, :recoverable, :rememberable, :trackable, :validatable end Segundo, elimine las rutas de registro del routes.rb en routes.rb

devise_for :users, :skip => [:registrations] , controllers: { sessions: ''users/sessions'' }

Ahora, el dispositivo omitirá todos los enlaces de registro desde su vista y también ya no tendrá las rutas de registro en sus rutas.

Estoy tratando de eliminar / deshabilitar la ruta ''user / sign_up "de Devise. Estoy haciendo esto porque no quiero que personas aleatorias obtengan acceso a la aplicación. Lo tengo en parte al agregar lo siguiente en route.rb

Rails.application.routes.draw do devise_scope :user do get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration end ... devise_for :users, :skip => :registration end

Sin embargo, esto rompe <%= link_to "Profile", edit_user_registration_path, class: "btn btn-info btn-flat" %>

Que quiero mantener para que los usuarios puedan actualizar su perfil. Sé que es debido a la devise_for :users, :skip => :registration

¿Hay una solución para este problema?

Corriendo

Diseño (4.2.0, 4.1.1, 4.1.0)

Rieles 4.2.5

ruby 2.3.0p0 (2015-12-25 revisión 53290) [x86_64-linux]


Como solo es un alias para devise_scope , puedes poner todo eso en un solo bloque.

devise_for :users, skip: [:registrations] as :user do get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration get ''users/edit'' => ''devise/registrations#edit'', :as => ''edit_user_registration'' put ''users'' => ''devise/registrations#update'', :as => ''user_registration'' end


El siguiente código parece hacer el truco por mí:

Rails.application.routes.draw do devise_scope :users do #notice "users" here, not "user" get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration end devise_for :users, :skip => [:registrations] as :user do get ''users/edit'' => ''devise/registrations#edit'', :as => ''edit_user_registration'' put ''users'' => ''devise/registrations#update'', :as => ''user_registration'' end ...


La forma más sencilla es simplemente eliminar el módulo de dispositivo ": registerable" de la lista predeterminada definida en su Modelo (el nombre de la clase utilizada por los usuarios de la aplicación, generalmente Usuario ).

class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable ... end

Así lo tendrás así:

class User < ActiveRecord::Base devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable ... end


Solución para eliminar la ruta de inicio de sesión de Devise

Ingrese lo siguiente al comienzo de las routes.rb

Rails.application.routes.draw do devise_scope :user do get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration end

... Después de la declaración anterior, agregue lo siguiente a continuación en routes.rb

devise_for :users, :skip => [:registrations] as :user do get ''users/edit'' => ''devise/registrations#edit'', :as => ''edit_user_registration'' put ''users'' => ''devise/registrations#update'', :as => ''user_registration'' end

Esto eliminará / deshabilitará la ruta user/sign_up para Devise sin interrumpir edit_user_registration_path

Reinicie su servidor de rieles y debería funcionar.