Rails:UnknownAttribute 错误 - 如何在 Rails6 中首先让我的模型“知道”属性?

在 Rails6 中,我认为有一条评论提到我只能使用 Migrations 为模型分配属性。 (即模型表迁移中的列会自动分配给该模型)

正确吗?

和错误信息

activeModel::UnknownAttributeError 

是因为例如某些视图在表单中使用未知属性而产生的?即:一,通过迁移没有列?

linlongzhou 回答:Rails:UnknownAttribute 错误 - 如何在 Rails6 中首先让我的模型“知道”属性?

我只能使用迁移来为模型分配属性。

从技术上讲,没有。但在实践中 - 是的。在启动时,Rails 加载它所连接的任何数据库的模式并为您的模型生成属性。您可以打开 psql 控制台(或您选择的数据库的等效控制台),手动添加一列,然后该属性将在下次架构刷新时出现在您的模型中。但你不应该那样做。您的所有架构更改都应在迁移中进行。

并且会产生错误消息 ActiveModel::UnknownAttributeError 是因为例如某些视图在表单中使用了未知属性?

是的。

即:一,通过迁移没有列?

没有。您可以定义瞬态属性(那些不会持久化,因此不需要数据库列和迁移的属性)。

class User < ApplicationRecord
  attribute :skip_extended_validation # this attribute is not persisted,but can be set from forms,etc.
end
,

对于您问题的最后一部分,此特定错误 (UnknownAttributeError) 在 mass assignment 期间发生在未知属性上。

如果您直接在实例上调用它,错误会有所不同(我相信是 NoMethodError),因为 Rails 无法知道您是否尝试访问属性或方法。

本文链接:https://www.f2er.com/283084.html

大家都在问