2

我应该为架构中具有布尔类型的属性编写任何验证吗?

create_table "table_name", :force => true do |t|
  t.boolean "column", :default => true
end

将列设置为“asdasd”在 .save 之后评估为 false。我需要担心通过 POST 发送的任何奇怪的值(我正在为我的控制器编写更新方法)可能会导致任何危险吗?

4

2 回答 2

1

验证可能是个好主意,否则您可能会得到意想不到的结果。你应该这样做:

validates_inclusion_of :column, :in => [true, false]

这也将防止空值。如果您想允许这些,请设置:allow_nil => true.

于 2011-06-28T12:54:59.883 回答
0

一般来说,最好进行验证,特别是如果该字段是敏感字段。如果该字段类似于启用某些定期帐单检查的字段并且如果发送了一些随机字符串,因为您的默认值为 true,它将变为 true。添加验证是一件好事,考虑到它在 Rails 中非常容易:)

于 2011-06-28T12:01:16.227 回答