Я запускаю бета-сайт для избранной группы пользователей. Я хочу отключить регистрацию только в производственной среде и только на короткий период времени (т. Е. Я не хочу полностью уничтожать свою регистрацию). Я знаю, что могу просто скрыть ссылку «зарегистрироваться», но подозреваю, что хакеры более умные, чем я, все еще могут использовать маршруты RESTful для выполнения регистраций. Как лучше всего отключить регистрацию, чтобы мои среды тестирования / разработки по-прежнему работали, но это повлияло на производство? Спасибо за любые указатели.
Я пробовал указывать именованные области таким образом, чтобы «sign_up» переходило в «sign_in», но это не сработало. Вот что я пробовал:
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
В идеале мы отправили бы пользователя на страницу «pages # registration_disabled» или что-то в этом роде. Я просто хотел получить что-то работающее, с чем можно было бы поиграть.
РЕДАКТИРОВАТЬ: я изменил модель по запросу, а затем добавил следующее в /spec/user_spec.rb
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
он передается как «истинный», а не ложный. Есть ли способ смоделировать производственную среду? Я просто наплевал на это.
Спасибо!
RAILS_ENV
устарел и что предпочтительнее использоватьRails.env
Стратегия, которую я использую, - это что-то вродеif Rails.env.production?
установить некоторую константу в значение true, а затем в тесте просто проверить константу. - person Fareesh Vijayarangam   schedule 20.03.2011if Rails.env.production? or Rails.env.test?
в модель и решить ее таким образом. - person Fareesh Vijayarangam   schedule 20.03.2011