我的模特:
class Foo < ActiveRecord::Base
has_many :bars, inverse_of: :foo
accepts_nested_attributes_for :bars
...
end
class Bar < ActiveRecord::Base
belongs_to :foo, inverse_of: :bars
...
end
当我尝试创建这样的记录时:
Foo.create(foo_attribute: value, bars_attirbutes: [{bar_attribute: value}])
我明白了:
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "bars" violates foreign key constraint "bars_foo_id_fkey"
DETAIL: Key (foo_id)=(14) is not present in table "foos".
所以我想ActiveRecord试图在保存父模型之前保存嵌套模型,因此错误。但为什么这样做呢?我怎样才能阻止它这样做呢?
答案 0 :(得分:1)
我今天遇到了类似的问题。在我的情况下,问题是由于我通过创建一个新表将2个表合并为1(单表继承),但忘记丢弃两个旧表。
我还有其他表对这两个旧表有外键约束。更新或删除那些外键约束,你应该好好去。