You might often want to connect to different databases using ActiveRecord. Here’s how you do it:
#DB definitions:
class DatabaseCurrent < ActiveRecord::Base
self.abstract_class = true
establish_connection settings['database']
end
class DatabaseOld < ActiveRecord::Base
self.abstract_class = true
establish_connection settings['database2']
end
#Model definitions (current):
class Video < DatabaseCurrent
belongs_to :user
set_table_name :videos
end
class Photo < DatabaseCurrent
belongs_to :user
set_table_name :photos
end
class User < DatabaseCurrent
has_many :videos
has_many :photos
set_table_name :user
end
class Tag < DatabaseCurrent
set_table_name :tag
end
#Model definitions (old):
class FileDB < DatabaseOld
set_table_name :file
end
Pretty easy. The only thing to note is that you should set_table_name
, otherwise, AR chokes up. Also, often you want to directly play directly with SQL. Unfortunately, ActiveRecord::Base.execute
doesn’t work any longer (coz it doesn’t have a connection), but you can do it this way:
DatabaseCurrent.connection.execute("SQL")
That’s the tutorial for the day!
Leave a Reply