我进行了以下迁移,并且希望能够检查与环境相关的当前数据库是否为mysql数据库。如果是mysql,则要执行特定于数据库的SQL。

我该怎么办?

类AddUsersFb
def自检
add_column:users,:fb_user_id,:integer
add_column:users,:email_hash,:string
#if mysql
#execute(“修改表的用户修改fb_user_id bigint”)
结束

def self.down
remove_column:users,:fb_user_id
remove_column:users,:email_hash
结束

结束

最佳答案

ActiveRecord::Base.connection将为您提供有关boot.rbenvironment.rb建立的数据库连接的所有信息
ActiveRecord::Base.connection返回很多信息。因此,您必须确切了解要查找的内容。

正如Marcel指出的那样:

ActiveRecord::Base.connection.instance_of?
  ActiveRecord::ConnectionAdapters::MysqlAdapter

可能是确定数据库是否为MySQL的最佳方法。

尽管依赖于可能在ActiveRecord版本之间进行更改的内部信息,但我更喜欢这样:
ActiveRecord::Base.connection.instance_values["config"][:adapter] == "mysql"

10-06 04:47
查看更多