编辑:
我希望将一列视为Rails中的主键和外键。也就是说,使用references
方法创建一个外键。我想要做的事情类似于:
def change
create_table :VipPerson, id: false do |t|
t.primary_key :person_id
t.references :person, :id, column: :person_id
t.timestamps
end
end
我希望拥有一个定制化的主键,该主键也被Rails模型用于指向Person模型(见下文)。这与数据库中使用的外键无关(直到Rails 4.2才支持创建真正的外键,如Demi Magus所指出的)。
-
我想在我的Rails项目中实现多表继承(MTI),因此实现类似于关系数据库中通常所做的继承:
table: Person
-------------
(PK) ID
Name
...
table: VipPerson (specalization of Person)
----------------
(PK) (FK) Person_ID
VIP-Status
...
因此,我需要编写一个迁移,将一个属性(这里是
Person_ID
)同时声明为(自定义的)主键和外键。 我不知道如何使用Rails迁移DSP的方法来做到这一点。我不想使用Rails的多态关联,因为我想保证数据库中的数据完整性。我知道我还需要自定义Rails模型,但让我们不要谈论那个话题。 主要问题是如何编写迁移,使PK也成为FK(反之亦然)。