ruby-on-rails - 使用 ActiveRecord 获取模式的大小

标签 ruby-on-rails postgresql activerecord schema multi-tenant

我尝试从子域的名称中获取架构的大小.. 公共(public)架构中的子域名称,

在 controller.rb 上

@account = Account.find_by_subdomain(params[:subdomain])
@itemlist = Account.find(:all,:select => 'subdomain')
@schemasize = ActiveRecord::Base.connection.select_rows(%q{select pg_size_pretty(CAST((SELECT SUM(pg_total_relation_size(table_schema || '.' || table_name) ) FROM information_schema.tables WHERE table_schema = '}+@itemlist.to_s+%q{') As bigint) )  As schema_size}).to_s.gsub(/\D/, '').to_i

获取 localhost:3000/namesubdomain

命令提示符输出

 (21.0ms)  select pg_size_pretty(CAST((SELECT SUM(pg_total_relation_size(table
_schema || '.' || table_name) ) FROM information_schema.tables WHERE table_schem
a = '[#<Account subdomain: "namesubdomain">]') As bigint) ) As schema_size

我想在命令提示符下输出

   (151.0ms)  select pg_size_pretty(CAST((SELECT SUM(pg_total_relation_size(tabl
e_schema || '.' || table_name) ) FROM information_schema.tables WHERE table_sche
ma = 'namesubdomain') As bigint) ) As schema_size

有什么想法吗?

最佳答案

@itemlist.to_s 会将对象呈现为字符串。由于该对象实际上是一个数组,因此呈现为字符串将只输出有关数组的信息而不是内容。您可能想要的是:

@itemlist.first.subdomain

或:

@itemlist.map(&:subdomain).join(" ")

关于ruby-on-rails - 使用 ActiveRecord 获取模式的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591513/

相关文章:

ruby-on-rails - 部分在 rails 中具有多个产量

ruby-on-rails - 选择第三层 ActiveRecord_Relation - Rails、ActiveRecord、HABTM

ruby-on-rails - Ruby - 从哈希中删除值

mysql - 选择 ID 位于作为属性存储的 ID 列表中的记录

database - Hibernate 逆向工程数据库

ruby-on-rails - 将find_by_sql转换为可返回activeRecord关系的内容

sql - 使用 postgresql 中另一个表的条件更新列

macos - 如何在 OS 10.6 (Snow Leopard) 上解决此 PostgreSQL 错误

ruby-on-rails - 以 Rails 方式实现通知模型

ruby-on-rails - 如何在不使用任何 yaml 文件的情况下建立第二个数据库连接?