我在我的database.yml:
class UsersController < ApplicationController
def foo
users_nb = User.count #this use my default db : dev1
other_connexion = ActiveRecord::Base.establish_connection("#{Rails.env}_2").connection
users_nb_other_site = connexion.execute("SELECT COUNT(*) FROM users").first[0]
end
end
我需要在foo操作中进行许多查询,但使用这两个DB:
ActiveRecord::Base.transaction do
begin
yield
rescue Exception => e
raise ActiveRecord::Rollback
end
有效,但我将所有动作控制器封装在事务中,如:
ActiveRecord::Base.transaction do
有了这个,我之前的代码不起作用,它引发了一个错误:
用户控制器中的ActiveRecord :: StatementInvalid#foo NoMethodError: 未定义的方法`query&#39;为零:NilClass你的意思是? to_query: ROLLBACK
错误行是: scanf("%d",&N);
count=0;
for(i=2;i<=N;i++)
{
c=a;
while(c>=i)
{
c=c/i;
}
if(b==1)
count++;
}
printf("%d\n",count);
那么我怎样才能在我的主要数据库同时在另一个数据库上进行连接和查询?
答案 0 :(得分:0)
好的,我的问题是我不明白class ReadDatabaseConnection < ActiveRecord::Base
def self.abstract_class?
true # So it gets its own connection
end
end
ReadDatabaseConnection.establish_connection(slave_settings)
会覆盖我的第一个连接和交易。
我创建了一个像这里所说的抽象类:https://makandracards.com/makandra/10169-when-connecting-to-a-second-database-take-care-not-to-overwrite-existing-connections
CSV.foreach('C:\Users\username\Desktop\Original.csv', :headers=>true, force_quotes: false, :quote_char => "\x00") do |row|
p row
end
我保持这样的联系,没有pb!