У меня есть приложение rails, которое использует несколько баз данных sqlite3 (эта часть не подлежит обсуждению), и у меня есть следующие классы
class User < ActiveRecord::Base
establish_connection "users_#{Rails.env}" # use alternate DB
has_many :memberships
has_many :groups, through => :memberships
end
class Group < ActiveRecord::Base
establish_connection "users_#{Rails.env}" # use alternate DB
has_many :memberships
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :group
belongs_to :user
# validations stuff
establish_connection "users_#{Rails.env}" # use alternate DB
end
Когда я создаю пользователя с группой, я получаю следующее:
ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: INSERT INTO "memberships" ...
Однако, когда я удаляю вызов метода «create_connection» и использую единственную базу данных по умолчанию, все работает нормально и, как и ожидалось.
Я попытался увеличить время ожидания в database.yml до 15 секунд, но это же исключение просто появляется дольше.