Rails PostgreSQL数组无法迭代
问题描述:
我为我的控制器编写了一个辅助方法来遍历一个属性,使用PostgreSQL将其表示为一个数组。Rails PostgreSQL数组无法迭代
def format_cf array
nums = ""
array.each { |c| nums += "#{c}, " }
unless nums.blank?
nums.chop!.chop!
end
nums
end
这样,我没有得到凌乱{}
字符在我看来。我将这个属性的空值作为字符串“{}”实现,这意味着我在迁移中设置了默认值。这对我的开发环境来说不是问题,因为它将它解释为一个空数组。不过,现在在生产,这个辅助方法是抛出一个错误,说
ActionView::Template::Error (undefined method `each' for "{}":String)
是我的实现错在这里,或任何人都可以想一些不起眼的设置比较我development.rb和production.rb时,我可能忽略的?
编辑:2013-04-11 9:00
我使用Capistrano的与麒麟和nginx的
答
正在部署我客串,你用水龙头与在Heroku上部署游数据库
heroku db:push
问题是水龙头不支持Postgres数组,并且最终将该列转换为字符串。对此有很多解决方法。 我使用的是开在Heroku
heroku run console
控制台然后获取数据库
User.connection # or any of your models
连接,然后以创建备份柱与connection#execute
方法执行原始的SQL,删除当前的字符串列并将其重新创建为一个数组。
你可能会发现它更有用的使用由Heroku的
,并建议import/export如果你不使用Heroku的,那么我完全错了,我不知道你的问题是:)
什么
答
如果您使用rails 4 https://github.com/rails/rails/issues/10432,我会猜测您也可能遇到此错误。基本上,迁移系统中有一个错误,将:string, array: true
变成正常的:string
指令。使用边缘的东西的乐趣。
感谢您的回应!实际上,我正在使用独角兽和capistrano的nginx进行部署。有关这方面的知识? – 2013-04-11 13:59:41
对不起,但没有...好吧,它看起来像我与heroku的问题,但!祝你好运 :) – pjam 2013-04-11 14:02:05