4
Postgres 버전 9.1.9와 함께 Heroku Cedar 스택에서 실행되는 Rails 3.2.2 앱에서.Heroku는 Integers in 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'
는 "개인 정보 보호" 'INT4의 DEFAULT 0'으로 Heroku가 데이터베이스의 DDL에 정의되어
하면 다음과 같은 방법을 실행하는 동안. Heroku가이 콘솔을 실행 사용하는 경우 응용 프로그램은 심지어 같은 레일 프레임 워크/보석/데이터베이스와 로컬 잘 작동하고 :
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'대신에 비트 연산자를 사용합니까? – Pigueiras
@Pigueiras 개인 정보 보호 정책은 내가 부울 값 열을 가지지 않고 사용하는 비트 문자열이기 때문입니다. 개인 정보 보호의 각 비트는 일부 권한을 제어합니다. –
잘 모르겠지만'privacy.present?'나'privacy.to_i' 같은 것을 사용하지 않으시겠습니까? –