gpt4 book ai didi

mysql - 你如何访问 ruby​​ on rails 2 中的 bit mysql 数据类型?

转载 作者:行者123 更新时间:2023-11-29 06:58:26 26 4
gpt4 key购买 nike

我有一个类型为 bit 的字段在 MySQL 数据库中,但我不确定如何访问该值。

ruby debug方法给我(注意空格,它们可能是以二进制形式存储的不可见字符):

--- &id001 !ruby/object:Room 
attributes:
bit_field_false: !binary |
AA==

bit_field_true: !binary |
AQ==

bit_field_falsebit_field_true应该是 falsetrue分别。我还注意到一些奇怪的属性:

  • 当我将它们转换为整数时,它们都显示为 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) .

最佳答案

根据 https://stackoverflow.com/a/11394467/111884 的建议,我发现了一些比 bitfields 简单得多的东西(我无法开始工作 - 可能是 Rails 2 或其他东西) - 方法 getbyte

您可以通过以下方式获得第一位:

bit_field_false.getbyte(0)  # Returns `0`
bit_field_true.getbyte(0) # Returns `1`

还发现你可以这样做:

bit_field_false == "\0"  # Returns `true`
bit_field_false == "\1" # Returns `false`

bit_field_true == "\0" # Returns `false`
bit_field_true == "\1" # Returns `true`

关于mysql - 你如何访问 ruby​​ on rails 2 中的 bit mysql 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11393685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com