所以我正在构建一个涉及在页面上提交表单的集成。但由于某种原因,数据库连接在发布请求期间被破坏了?或者服务器没有访问同一个数据库?
正在发生的事情是我获得了社区的页面,但是当我在该页面上提交表单时,处理该帖子的控制器不知道该社区。 p>
我已经尝试过关闭protection_from_forgery了。连接似乎相同(根据AR:Base.connection)。
我正在使用集成capybara + rspec的共享连接池方法。
(ActiveRecord :: Base.shared_connection = ActiveRecord :: Base.connection)
我正在使用Rails 3.0.11,rspec 2.6.4,capybara(1.0.0)和capybara-webkit(0.8.0)。
答案 0 :(得分:0)
确保设置
RSpec.configure do |config|
config.use_transactional_fixtures = false
end
因为Capybara测试通过单独的数据库连接。
答案 1 :(得分:0)
实际上共享连接hack存在问题。例如,如果您使用gem mysql2,您将开始看到一些错误,如:
Mysql2::Error This connection is still waiting for a result
请改用它。它由迈克·佩勒姆(Mike Perham)撰写,全部归功于他。
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || ConnectionPool::Wrapper.new(:size => 1) { retrieve_connection }
end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
您还需要安装gem connection_pool
。
这将使您免于许多麻烦。