我正在推出一个beta网站,只向一组特定的用户开放。我想仅在生产环境中短暂禁用注册功能(即,我不想完全删除注册功能)。我知道我可以简单地隐藏“注册”链接,但我怀疑比我聪明的黑客仍然可以使用RESTful路由来完成注册。有什么最好的方法可以禁用注册,以便我的测试/开发环境仍然正常工作,但影响到生产环境?谢谢您提供任何建议。
我尝试过将命名范围指向“sign_up”转到“sign_in”,但没有成功。以下是我的尝试方式:
我尝试过将命名范围指向“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
。我的策略是这样的:如果Rails.env.production?
设置一些常量为true,然后在测试中,只需测试该常量即可。 - Fareesh Vijayarangamif Rails.env.production? or Rails.env.test?
来解决这个问题。 - Fareesh Vijayarangam