我有单选按钮,我想用它来保存出勤信息: 是的,不,也许
HAML中的代码:
= f.input :attendee, :as => :radio, :collection => { "Yes" => true, "No" => false, "Maybe" => nil }, :label => "Attendence:"
数据库中的字段与会者是布尔类型。 当我将我的值从Yes / No更改为Maybe rails并没有在数据库中保存'nil'。我该怎么做才能保存'nil'
答案 0 :(得分:2)
如果布尔值设置为默认值为true或false,则它不接受空值,否则您可以将空值传递给布尔字段,如下所示。
= f.input :attendee, :as => :radio, :collection => { "Yes" => true, "No" => false, "Maybe" => "" }, :label => "Attendence:"
答案 1 :(得分:1)
Boolean is true/false
,您无法nil
(nil
被视为错误):
在计算机科学中,布尔数据类型是一种数据类型,具有两个值(通常表示为true和false)。 [[如果不是真,假]]
使用enum
:
#app/models/model.rb
class Model < ActiveRecord::Base
enum attendee: [:yes, :no, :maybe]
end
这比使用boolean
略微臃肿,但保留data integrity(您必须破解Rails布尔值才能将nil
识别为maybe
}})。 Enum
列integers
,每个enum
由数字代表......
yes = 0
no = 1
maybe = 2
这样,您就可以执行以下操作:
= f.input :attendee, as: :radio, collection: Model.attendees, :label => "Attendence:"