我应该在rails 3中使用boolean fields还是state_machine gem?

时间:2012-10-18 12:08:24

标签: ruby-on-rails ruby ruby-on-rails-3 boolean

我有一个电子邮件系统,我希望用户可以通过复选框决定发生确定事件时想要收到的消息,例如

field :when_receive_order, :type => Boolean, :default => "true"
field :when_accept_order, :type => Boolean, :default => "true"
field :when_cancel_order, :type => Boolean, :default => "true"
field :when_reject_order, :type => Boolean, :default => "true"
.
.
.
more...

我想知道是否使用Boolean值,或在这些情况下使用state_machine gem

在此链接中http://railstips.org/blog/archives/2012/10/10/booleans-are-baaaaaaaaaad/认为Boolean值不好。所以我提出这个问题。

注意:我的数据库是mongodb和我的odm es mongoid

2 个答案:

答案 0 :(得分:2)

如果这些布尔值中只有一个始终为true,则可以使用state_machine。否则,你不能。

在您的情况下,我认为可能有多个值可能是真的。如果用户想要在接受订单和取消订单时收到邮件,该怎么办?所以你不能使用state_machine。

答案 1 :(得分:0)

你是对的,你的实体的这种配置很容易导致错误...你应该依赖这个宝石或者看看它的源代码并自己实现它。