Ruby on rails rails 4 postgis和单数表名

Ruby on rails rails 4 postgis和单数表名,ruby-on-rails,rgeo,Ruby On Rails,Rgeo,我们正在使用rails(4.0.4)、ruby(2.0.0p247)和activerecord postgis适配器(0.6.5)以及在./config/environment.rb中设置的单数表名(activerecord::Base.pluralize_table_names=false) 这在开发和测试环境中非常有效 在生产环境中,它适用于每个表,但不适用于一个项目。对于此表,我们在控制器索引中看到一个错误 我重新生成了脚手架,并能够在项目_控制器中确定此lin的问题: 为列(:locat

我们正在使用rails(4.0.4)、ruby(2.0.0p247)和activerecord postgis适配器(0.6.5)以及在./config/environment.rb中设置的单数表名(activerecord::Base.pluralize_table_names=false)

这在开发和测试环境中非常有效

在生产环境中,它适用于每个表,但不适用于一个项目。对于此表,我们在控制器索引中看到一个错误

我重新生成了脚手架,并能够在项目_控制器中确定此lin的问题:

为列(:location,rgeo::Geographic.spheremic_factory(:srid=>4326))设置_rgeo_工厂

错误是:

 E, [2014-04-11T10:23:09.543299 #10740] ERROR -- : PG::UndefinedTable: ERROR:  relation "projects" does not exist
LINE 5:                WHERE a.attrelid = '"projects"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"projects"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum

I, [2014-04-11T10:23:09.543625 #10740]  INFO -- : Completed 500 Internal Server Error in 7ms
F, [2014-04-11T10:23:09.545403 #10740] FATAL -- :
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "projects" does not exist
LINE 5:                WHERE a.attrelid = '"projects"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"projects"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
           ORDER BY a.attnum
): app/controllers/projects_controller.rb:11:in `index'
看起来很奇怪,它在其他任何环境中都能工作,在生产环境中,它只对一个表以及关联的表失败


任何建议都值得赞赏。

我找到了两种解决方案:

  • 从模型中删除set_rgeo_factory_for_列,反正我使用的是默认工厂
  • 显式指定表名self.table\u name。这很奇怪,因为我设置了ActiveRecord::Base.pluralize\u table\u names=false