我想在视图中显示当前主机和数据库名称。我在哪里可以得到这些名字?是否存在预定义的环境或全局变量?
hi3rlvi21#
在Rails 3中,您可以使用
Rails.configuration.database_configuration[Rails.env]
或
Rails.application.config.database_configuration[Rails.env]
ActiveRecord::Base.connection_config
m3eecexj2#
Rails::configuration.new答案在Rails 3中不起作用
config = Rails::Configuration.new NoMethodError: undefined method `new' for Rails::Configuration:Module [...]
如果你使用的是MySQL或Postgres,那么这个方法就可以了
ActiveRecord::Base.connection.current_database
但这只适用于已实现该方法的驱动程序。例如,它不适用于SQLite。
dffbzjpn3#
您可以创建一个rails配置对象并从中获取必要的信息:
config = Rails::Configuration.new host = config.database_configuration[RAILS_ENV]["host"] database = config.database_configuration[RAILS_ENV]["database"]
有关详细信息,请参阅documentation for Rails::Configuration。
8i9zcol24#
在Rails 3中,通过Rails::Application.config最容易访问,如下所示:
Rails::Application.config
YourApplicationClassName::Application.config.database_configuration[::Rails.env]
如果你试图直接在Rails而不是YourApplicationClassName上调用它,rails会给予你一个deperecation警告。如果你不知道你的应用程序常量是多少,可以在Rails控制台中为你的应用程序尝试Rails.application.class.name。
Rails
YourApplicationClassName
Rails.application.class.name
g2ieeal75#
当您连接到多个数据库时,下面的方法很好。在Sqlite3和Mysql 2上测试
MyModel.connection.instance_variable_get(:@config)[:database]
jxct1oxe6#
在Rails控制台中测试:
ActiveRecord::Base.connection.instance_variable_get(:@config)
下一个信息应该是:适配器,主机,编码,重新连接,数据库名称,用户名,通行证
9rnv2umw7#
这应该可以工作ActiveRecord::Base.connection.database_name
ActiveRecord::Base.connection.database_name
ztmd8pv58#
刚刚发现,Rails 7中的数据库配置是ActiveRecord::Base.connection_db_config。要获得名称,您可以执行ActiveRecord::Base.connection_db_config.database
ActiveRecord::Base.connection_db_config
ActiveRecord::Base.connection_db_config.database
8条答案
按热度按时间hi3rlvi21#
在Rails 3中,您可以使用
或
或
m3eecexj2#
Rails::configuration.new答案在Rails 3中不起作用
如果你使用的是MySQL或Postgres,那么这个方法就可以了
但这只适用于已实现该方法的驱动程序。例如,它不适用于SQLite。
dffbzjpn3#
您可以创建一个rails配置对象并从中获取必要的信息:
有关详细信息,请参阅documentation for Rails::Configuration。
8i9zcol24#
在Rails 3中,通过
Rails::Application.config
最容易访问,如下所示:如果你试图直接在
Rails
而不是YourApplicationClassName
上调用它,rails会给予你一个deperecation警告。如果你不知道你的应用程序常量是多少,可以在Rails控制台中为你的应用程序尝试Rails.application.class.name
。g2ieeal75#
当您连接到多个数据库时,下面的方法很好。在Sqlite3和Mysql 2上测试
jxct1oxe6#
在Rails控制台中测试:
下一个信息应该是:适配器,主机,编码,重新连接,数据库名称,用户名,通行证
9rnv2umw7#
这应该可以工作
ActiveRecord::Base.connection.database_name
ztmd8pv58#
刚刚发现,Rails 7中的数据库配置是
ActiveRecord::Base.connection_db_config
。要获得名称,您可以执行
ActiveRecord::Base.connection_db_config.database