当我将一个属性更改为false时,model.save不会

时间:2011-08-24 23:20:07

标签: ruby-on-rails validation model attributes required

我有一个模特投票。投票具有属性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

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

2 个答案:

答案 0 :(得分:1)

Rails的一个常见问题是尝试'validate_presence'的布尔值。该验证使用.blank?和false.blank =>真正。因此,要验证布尔值的存在,请使用:

validates :vote_type, :inclusion => {:in => [true, false]}

答案 1 :(得分:1)

如果字段“没有值” - 这就是错误 - 则删除所需的=>从原始迁移中返回true并重新创建该表/ db(或创建一个删除所需设置的新迁移)。