3

我正在运行集成测试,以确保如果用户未登录,我before_filter将重定向到。一切似乎都工作正常,但我在消息中看到,我只是想知道这是否正常,或者如果我在某处错过了配置。谢谢!root_pathhttp://www.example.com/Redirected tolog/test.log

日志/test.log

Started PUT "/users/980190963" for 127.0.0.1 at 2012-07-29 13:31:39 -0700
Processing by UsersController#update as HTML
  Parameters: {"user"=>{"password"=>"[FILTERED]"}, "id"=>"980190963"}
Redirected to http://www.example.com/
Filter chain halted as :reject_if_logged_out rendered or redirected
Completed 302 Found in 1ms (ActiveRecord: 0.0ms)

users_controller.rb

...
before_filter :reject_if_logged_out, only: [:update]
...
private
def reject_if_logged_out
  redirect_to root_path unless @current_user
end
4

2 回答 2

2

奇怪的是,似乎只有我的一些应用程序可以做到这一点。但这之前已经在这里回答过,这是默认设置,下面是如何更改它:如何更改默认的“www.example.com”域以在 Rails 中进行测试?

于 2012-07-29T21:21:46.380 回答
1

因为这是 capybara 中的默认设置,cucumber 和许多其他用于 rails 的测试框架使用的库。见lib/capybara.rb

Capybara.configure do |config|
  # ...
  config.default_host = "http://www.example.com"
  # ...
end

因此,如果您未在配置中指定任何其他内容,则默认@request.host值为www.example.com.

于 2012-07-29T21:26:30.280 回答