我进行了以下迁移,并且希望能够检查与环境相关的当前数据库是否为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.rb
和environment.rb
建立的数据库连接的所有信息ActiveRecord::Base.connection
返回很多信息。因此,您必须确切了解要查找的内容。
正如Marcel指出的那样:
ActiveRecord::Base.connection.instance_of?
ActiveRecord::ConnectionAdapters::MysqlAdapter
可能是确定数据库是否为MySQL的最佳方法。
尽管依赖于可能在
ActiveRecord
版本之间进行更改的内部信息,但我更喜欢这样:ActiveRecord::Base.connection.instance_values["config"][:adapter] == "mysql"