我在MySQL數據庫中有一個類型爲bit
的字段,但我不確定如何訪問該值。如何在rails 2上訪問ruby中的bit數據類型?
紅寶石debug
方法給我(注意空格,他們很可能以二進制形式存儲不可見的字符):
--- &id001 !ruby/object:Room
attributes:
bit_field_false: !binary |
AA==
bit_field_true: !binary |
AQ==
bit_field_false
和bit_field_true
應分別false
和true
。我也注意到一些奇怪的特性:
- 當我將它們轉換爲整數,它們都顯示爲
0
- 當我解壓的真值,即
<%= @room.bit_field_true ? "true" : "false" %>
和<%= @room.bit_field_false ? "true" : "false" %>
,他們都產生true
- 當我將它們顯示爲字符串,它們顯示爲空字符串
如何獲取它們各自的值?二進制值意味着什麼?
的最終目標是向他們展示一個複選框,我有類似:
<% form_for(@room) do |room_f| %>
<%= check_box_tag :room_bit_field_false %><br/>
<%= check_box_tag :room_bit_field_true %><br/>
<% end %>
,但它總是顯示爲未選中狀態。我不確定這是如何爲這個設置創建複選框,所以這也可能是錯誤的,但無論我想知道如何提取代碼中的位值。
僅供參考,我使用Ruby on Rails的2.3.2,與mysql
適配器和mysql Ver 14.14 Distrib 5.5.10, for osx10.6 (i386)
。
我正與現有數據庫的工作,與軌道站點是更多的在其他地方生成的數據包裝。因此,比修改數據庫更容易獲得位數據類型的工作。感謝關於bitfields插件的提示 - 我會試一試。 – zlog 2012-07-09 13:18:08
當你在第二段中說'boolean'時,我認爲你的意思是一個替代,比如一個整數。如果我沒有記錯的話,除非你將位域堆積成更大的數量(由於它們被如何存儲,所以數量爲8),所以你沒有真正節省空間。除非你有嚴格的空間限制,否則本地整數速度,加上處理Rails的難易程度,將會成爲一個更好的選擇。 – GoinAum 2013-11-01 03:43:37