문제

나는 여전히 레일이있는 약간의 멍청이이지만 조금 이상하게 보이는 무언가를 가로 질러 달리고 있습니다. 데이터베이스의 모델에 부울 필드를 추가했습니다.

t.column :admin, :bool, :default => false, :null => false

그러나 SQLITE3 데이터베이스의 값은 't' 또는 'f'. 괜찮지 만 여전히 기대할 것입니다 user.admin? 값이 있으면 거짓을 반환합니다 'f'. 다음 콘솔 세션에서 볼 수 있듯이 그렇지 않습니다.

>> user = User.first
=> #<User id: 2, login: "matt", name: "", email: "google.ninja@no-spam.com", crypt
ed_password: "c6740f820b4cbf6e3d88188719f23cd3053a54f0", salt: "5629f5ee09f51543
a7d64dd903b8d9e53aa43a24", created_at: "2009-04-26 23:08:05", updated_at: "2009-
04-26 23:10:38", remember_token: nil, remember_token_expires_at: nil, admin: "t"
>
>> user.admin?
=> true
>> user.admin = false
=> false
>> user.save
=> true
>> user = User.first
=> #<User id: 2, login: "matt", name: "", email: "google.ninja@no-spam.com", crypt
ed_password: "c6740f820b4cbf6e3d88188719f23cd3053a54f0", salt: "5629f5ee09f51543
a7d64dd903b8d9e53aa43a24", created_at: "2009-04-26 23:08:05", updated_at: "2009-
05-06 03:32:23", remember_token: nil, remember_token_expires_at: nil, admin: "f"
>
>> user.admin?
=> true

이것은 sqlite에서 이상한 문제입니까, 아니면 내가 무언가를 얻지 못하는가?

도움이 되었습니까?

해결책

대신 사용하십시오 :

t.column :admin, :boolean, :default => false, :null => false

이유를 읽으십시오 여기.

다른 팁

문제는 데이터베이스 마이그레이션에 문제가있을 수 있습니다. 나는 그렇게 생각하지 않습니다 : bool은 사용하기에 적합한 데이터 유형 이름입니다. 시도 : 부울 대신, 예를 들어

t.column :admin, :boolean, :default => false, :null => false
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top