Ich starte eine Beta-Site mit einer ausgewählten Gruppe von Benutzern. Ich möchte die Registrierung nur in der Produktionsumgebung und nur für kurze Zeit deaktivieren (dh ich möchte meine Registrierung nicht vollständig stören). Ich weiß, dass ich den Link "Anmelden" einfach ausblenden kann, aber ich vermute, dass Hacker klüger sind, als ich die RESTful-Routen weiterhin verwenden kann, um Registrierungen durchzuführen. Was ist der beste Weg, um die Registrierung zu deaktivieren, damit meine Test- / Entwicklungsumgebungen weiterhin funktionieren, die Produktion jedoch betroffen ist? Vielen Dank für Hinweise.
Ich habe versucht, benannte Bereiche so zu kennzeichnen, dass "sign_up" zu "sign_in" wechselt, aber es hat nicht funktioniert. Folgendes habe ich versucht:
devise_scope :user do
get "users/sign_in", :to => "devise/sessions#new", :as => :sign_in
get "users/sign_up", :to => "devise/sessions#new", :as => :sign_up
end
Im Idealfall senden wir den Benutzer auf eine Seite "pages # registration_disabled" oder ähnliches. Ich wollte nur etwas zum Laufen bringen, mit dem ich herumspielen kann.
BEARBEITEN: Ich habe das Modell wie gewünscht geändert und dann Folgendes zu /spec/user_spec.rb hinzugefügt
describe "validations" do
it "should fail registration if in production mode" do
ENV['RAILS_ENV'] = "production"
@user = Factory(:user).should_not be_valid
end
end
es geht eher als "wahr" als als falsch über. Gibt es eine Möglichkeit, die Produktionsumgebung zu verspotten? Ich spucke nur diesen einen aus.
Vielen Dank!
RAILS_ENV
veraltet ist und bevorzugt wird.Rails.env
Die Strategie, die ich verwenden würde, besteht darin,if Rails.env.production?
eine Konstante auf true zu setzen. Testen Sie dann im Test einfach die Konstante.