1

我爲我的控制器編寫了一個輔助方法來遍歷一個屬性,使用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的

回答

0

正在部署我客串,你用水龍頭與在Heroku上部署遊數據庫

heroku db:push 

問題是水龍頭不支持Postgres數組,並且最終將該列轉換爲字符串。對此有很多解決方法。 我使用的是開在Heroku

heroku run console 

控制檯然後獲取數據庫

User.connection # or any of your models 

連接,然後以創建備份柱與connection#execute方法執行原始的SQL,刪除當前的字符串列並將其重新創建爲一個數組。

你可能會發現它更有用的使用由Heroku的

,並建議import/export如果你不使用Heroku的,那麼我完全錯了,我不知道你的問題是:)

什麼
+0

感謝您的迴應!實際上,我正在使用獨角獸和capistrano的nginx進行部署。有關這方面的知識? – 2013-04-11 13:59:41

+0

對不起,但沒有...好吧,它看起來像我與heroku的問題,但!祝你好運 :) – pjam 2013-04-11 14:02:05

1

如果您使用rails 4 https://github.com/rails/rails/issues/10432,我會猜測您也可能遇到此錯誤。基本上,遷移系統中有一個錯誤,將:string, array: true變成正常的:string指令。使用邊緣的東西的樂趣。