假设进行以下迁移:
class AddSectionReferences < ActiveRecord::Migration
def change
add_reference :sections, :sections, index: true, foreign_key: true, on_delete: :nullify
add_reference :sections, :parent
end
end
它抱怨道:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "section_id" referenced in foreign key constraint does not exist
: ALTER TABLE "sections" ADD CONSTRAINT "fk_rails_810c69e885"
所以,如果我添加:
add_column :sections, :sections_id, :integer
在参考之前然后抱怨:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: column "sections_id" of relation "sections" already exists
: ALTER TABLE "sections" ADD "sections_id" integer
发生了什么,当我尝试创建一个复数列(对于has_many)时,为什么在第一个错误中寻找section_id
列?
答案 0 :(得分:1)
当我试图创建一个复数列(对于
has_many
)时?
你从错误的一端接近这个。您如何想象此列包含多个/无限ID?这不是铁路公司期望的事情。
在has_many
关系中,外键列位于belongs_to
侧。列名称应该是单数,自然。因为它只能容纳一个id。
t.references :section