我正在与一组特定的用户一起启动Beta版网站。我只想在生产环境中禁用注册,并且只能禁用一小段时间(即,我不想完全取消注册)。我知道我可以简单地隐藏“注册”链接,但是我怀疑黑客比我仍然可以使用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
它传递的是“ true”而不是false。有没有办法模拟生产环境?我只是在吐口水。
谢谢!
RAILS_ENV
已被弃用,因此首选使用Rails.env
该策略。我将使用的策略类似于if Rails.env.production?
将一些常量设置为true,然后在测试中仅测试该常量。