2013-05-12 50 views
4

在使用Postgres 9.1.9版的Heroku Cedar堆棧上運行的Rails 3.2.2應用程序。
當執行下面的方法:Heroku閱讀字符串而不是整數在Rails中?

class Post < ActiveRecord::Base 
    def shared_to_all 
    privacy & 1 == 1 
    end 
end 

我碰上此錯誤:

Completed 500 Internal Server Error in 19ms 

NoMethodError (undefined method `&' for "0":String): 
    app/models/post.rb:75:in `shared_to_all' 
    app/controllers/application_controller.rb:212:in `next_post' 

「隱私」 在Heroku的數據庫爲 'INT4 DEFAULT 0' 的DDL定義。 的應用程序中使用的Heroku運行控制檯時,正常工作與本地相同Rails框架/寶石/數據庫,甚至是:

irb(main):008:0> Post.first.shared_to_all 
=> false 
irb(main):009:0> Post.first.privacy.class 
=> Fixnum 
irb(main):010:0> Post.first.privacy & 1 == 1 
=> false 
+0

這與你的問題沒有任何關係,但是,爲什麼你使用按位運算符而不是'zero?'方法? – Pigueiras 2013-05-12 10:22:39

+0

@Pigueiras因爲隱私是我使用的比特串,而不是有一堆布爾列。隱私中的每一位都控制着一些權限。 – 2013-05-12 10:44:29

+0

不太清楚你在做什麼,但爲什麼不使用'privacy.present?'或'privacy.to_i'或類似的東西? – 2013-05-12 10:46:26

回答

1

原來,它可能已被簡單地在數據庫遷移一個小故障,因爲我試圖回滾和再次遷移,現在它似乎工作正常。不知道該問題是否應該刪除或保留,以防其他人遇到同樣的問題。