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
這與你的問題沒有任何關係,但是,爲什麼你使用按位運算符而不是'zero?'方法? – Pigueiras 2013-05-12 10:22:39
@Pigueiras因爲隱私是我使用的比特串,而不是有一堆布爾列。隱私中的每一位都控制着一些權限。 – 2013-05-12 10:44:29
不太清楚你在做什麼,但爲什麼不使用'privacy.present?'或'privacy.to_i'或類似的東西? – 2013-05-12 10:46:26