当我将一个属性更改为 false 时,model.save 不会
我有一个模型投票。投票有一个属性 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
我不知道为什么它会回滚。我做错了什么?
I have a model Vote. Vote has an attribute vote_type. In my controller I do this
@vote = Vote.fetch(1)
logger.warn("current vote_type: #{@vote.vote_type}")
@vote.vote_type = false
@vote.save
This doesn't throw any error but I see the following in my server
Vote Columns (0.7ms) SHOW FIELDS FROM `votes`
current vote_type: true
SQL (0.1ms) BEGIN
SQL (0.1ms) ROLLBACK
I have no idea why it is rolling back. What am i doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果该字段“没有值”(即 false),则删除必需的 => true 从原始迁移并重新创建该表/数据库(或创建一个删除所需设置的新迁移)。
If the field can 'not have a value' - which is what false is - then remove the required => true from the original migration and recreate that table/db (or create a new migration that removes the required setting).
Rails 的一个常见问题是尝试对布尔值进行“validate_presence”。该验证使用 .blank?和 false.blank =>真的。因此,要验证布尔值是否存在,请使用:
A common issue with Rails is trying to 'validate_presence' of a boolean. That validation uses .blank? and false.blank => true. Therefore, to validate the presence of a boolean, use: