Rails Active Record 不允许保存

Posted

技术标签:

【中文标题】Rails Active Record 不允许保存【英文标题】:Rails Active Record Not Allowing Saves 【发布时间】:2014-08-12 23:07:14 【问题描述】:

我已将模型重命名为测试模型。我有一张空桌子,无论我为电子邮件输入什么,它总是说该电子邮件已经有一行。我已经完全重置了我的数据库。电子邮件是主键为 id 的 testmodel 的非唯一索引。这个模型有_许多其他模型,不属于任何东西。

irb(main):001:0> @app = testmodel.new
#excluded column data
irb(main):002:0> @app.email= 'test'
=> "test"
irb(main):003:0> @app.save
←[1m←[36m (1.0ms)←[0m  ←[1mBEGIN←[0m
←[1m←[35mtestmodel Exists (0.0ms)←[0m  SELECT  1 AS one FROM `test_models`  WHERE `test_models`.`email` = 'test' LIMIT 1
←[1m←[36m (0.0ms)←[0m  ←[1mROLLBACK←[0m
=> false

【问题讨论】:

@app.errors 显示什么? (尝试保存失败后) 啊,帮我修好了。显然,当我们进行转换以设计时,有一些新的要求没有通过,但它并没有告诉我们正确的理由。知道为什么它说电子邮件已经存在吗? @app.errors 说邮件已经被占用了?如果您的数据库表是空的,这很奇怪,应该是设计配置问题,但我需要更多信息才能知道 我修好了。最后,该错误消息没有任何原因。谢谢您的帮助。我希望我能代表你。 不用担心,很高兴为您提供帮助! 【参考方案1】:

显然,当我们进行转换以设计时,密码的处理方式存在问题。 最后我不得不使用@app.errors 来意识到这一点,但rails 说电子邮件已经被占用仍然很奇怪。

【讨论】:

以上是关于Rails Active Record 不允许保存的主要内容,如果未能解决你的问题,请参考以下文章

脱离rails 使用Active Record

如何更改 Rails 中 Active Record 的默认时区?

Rails 中的 Active Record 和 ORM 有啥区别?

Rails中重写Active Record字段属性

Rails 和 Active Record:复杂的 SQL 查询

Rails Active Record连接查询与排序和限制