📜  ActiveModel::UnknownAttributeError: 未知属性 (1)

📅  最后修改于: 2023-12-03 14:59:11.082000             🧑  作者: Mango

ActiveModel::UnknownAttributeError

ActiveModel::UnknownAttributeError 是 Rails 框架中的一个错误类型,用来表示给模型传递了一个未知的属性值。

错误信息

错误信息通常为:

ActiveModel::UnknownAttributeError: unknown attribute 'xxx' for Model.

其中,xxx 表示未知的属性名称,Model 表示出错的模型名称。

产生原因

出现 ActiveModel::UnknownAttributeError 错误通常有以下几个原因:

  1. 在模型定义中没有包含该属性;
  2. 传递的参数中包含了该未知属性;
  3. 在使用过程中更改了模型字段,但是数据库没有相应的修改;
  4. 在使用 update_attributescreate 方法时,传递了无法识别的属性。
解决方案

针对不同的原因,有不同的解决方案:

  1. 检查模型定义,确保包含了所有需要的属性;
  2. 检查传递的参数,确保不包含未知的属性;
  3. 进行数据库迁移,更新表结构;
  4. 在传递参数时,只传递包含在模型定义中的属性。
代码示例
class Post < ApplicationRecord
  # 包含了title字段,但未包含"作主题"字段
end

# 错误代码:
Post.create(title: "hello", 作主题: "world")

# 正确代码:
Post.create(title: "hello")