请为我的应用程序在rails中使用多个数据库的示例,我需要创建并保存一个内部和外部的表,没有所有数据库所以任何想法或示例明确吗?
我使用mysql,我不喜欢复制,因为它适用于所有数据库,我只需要使用一个外部表。
TNKS!
答案 0 :(得分:1)
如果我正确解释您的问题,您想知道如何在您的应用中为一个或多个模型使用不同的数据库。
你可以在Rails中完成这个。首先,您必须在config/database.yml
文件中创建另一个条目:
production:
....
development:
...
test:
...
# Our external database
external:
adapter: mysql
host: some_host
username: some_username
password: some_password
database: some_db
然后,在您的模型中,只需告诉Rails,对于此特定模型,请使用不同的连接:
class MyModel < ActiveRecord::Base
establish_connection :external
end
这会将MyModel的任何查询发送到外部数据库,而所有其他模型将照常使用生产/开发数据库。
请注意,当您同时使用两个不同的数据库时,MySQL本身不会让您执行某些功能,例如连接。否则,你应该对这种方法没问题。
答案 1 :(得分:1)
我的解决方案是下一个帮助vonconrad发布的。
的database.yml
喜欢vonoconrad post
MyModelconn.rb
class MyModelconnection < ActiveRecord::Base
# No corresponding table in the DB.
self.abstract_class = true
# Open a connection to the appropriate database depending
# on what RAILS_ENV is set to.
establish_connection(:connyml)
end
class User < ActiveRecord::Base
end
在users_controller.rb中,我需要在外部表中插入数据值,其中我保存在我的内部usres的Active Record中,所以外部swicht连接下一行:
MyModelconn.connection.execute('INSERT INTO 'users' (fileld1,filed2)VALUES('#{lcfield1}','#{lcfield2}')')
和BINGO!解决它!完美!
所以不需要你再次回到AR内部。