1

我有一个模型投票。投票有一个属性 vote_type。在我的控制器中,我这样做

 @vote = Vote.fetch(1)
 logger.warn("current vote_type: #{@vote.vote_type}")
 @vote.vote_type = false 
 @vote.save

这不会引发任何错误,但我在服务器中看到以下内容

    Vote Columns (0.7ms)   SHOW FIELDS FROM `votes`
    current vote_type: true
    SQL (0.1ms)   BEGIN
    SQL (0.1ms)   ROLLBACK

我不知道为什么它会回滚。我究竟做错了什么?

4

2 回答 2

1

Rails 的一个常见问题是尝试对布尔值进行“验证存在”。该验证使用 .blank?和 false.blank => true。因此,要验证布尔值的存在,请使用:

validates :vote_type, :inclusion => {:in => [true, false]}
于 2011-08-24T23:27:26.483 回答
1

如果该字段不能“没有值” - 这就是 false - 然后从原始迁移中删除 required => true 并重新创建该表/数据库(或创建一个删除所需设置的新迁移)。

于 2011-08-24T23:40:31.520 回答