我的成绩是A级
class A
include Mongoid::Document
has_many :bs
accepts_nested_attributes_for :bs和一个B级
class B
include Mongoid::Document
belongs_to :a和一个从B继承的类C
class C < B
field :new_field, type: String这在Mongoid6上运行得很好。在Mongoid7中,在一个带有fields_for的表单上,提交后,我现在得到:
Attempted to set a value for 'new_field' which is not allowed on the model B注意,这不是7.0 (我相信) b/c中支持的mongoid多态性,它不是在谈论单表继承(STI),而是支持属于同一个类/表的多个表作为相同的符号。不是这样的。我也尝试过使用as和多态:true。
有什么办法解决这个问题吗?
谢谢,凯文
发布于 2020-08-19 02:31:50
转到Mongoid 7.0或Rails 5.2 (不确定哪个更改破坏了这一点)你必须在STI的表单中设置类型,我是通过一个隐藏字段完成的:
<%f.hidden_field :_type, value: "C"%>这允许您设置仅用于后代的属性。
发布于 2021-08-04 13:53:01
我也遇到过类似的问题。我在一个项目中将mongoid从3.0升级到7.0,STI是在旧的应用程序中实现的。在父表中显式声明了_type,这导致了意外行为。我删除了它,项目就开始工作了。
https://stackoverflow.com/questions/63457121
复制相似问题