2016-12-19 44 views
0

我有一個users表,其布爾型字段處於活動狀態。我有數據庫中的用戶active: true。這個問題,下面的查詢沒有給出任何結果Activerecord:使用true查詢不會顯示布爾字段的任何結果

@users = User.where(active: true) #this results to empty array 

但是,如果我給1,而不是真正的話,我得到的結果。

@users = User.where(active: 1) #this gives correct result 

我不明白爲什麼true不起作用。

+0

在架構文件中是用戶活動集作爲布爾值? –

+0

這對SQL客戶端''用戶'表'上的'active'列返回什麼?SELECT「users」。「id」,「users」。「active」FROM「users」;'? 'true/false'還是'0/1'? – sa77

+0

它返回0/1,但我的架構表示字段活動是布爾值,而且當我運行像'User.first.active'這樣的查詢時,這個結果不是0/1 – asdfkjasdfjk

回答

0

SQLite沒有單獨的布爾存儲類。相反, 布爾值被存儲爲整數0(假)和1(真)。

您可以檢查data type of SQLite here

因此,您保存用戶爲活動true,但在數據庫中active字段的值爲1,這就是爲什麼User.where(active: 1)有效。