【问题标题】:Rails migration - many belongs_to to same table, multiply FKsRails 迁移 - 许多属于同一个表,乘以 FK
【发布时间】:2012-05-09 13:16:00
【问题描述】:

我需要这样一张桌子:

uid:integer
pid:integer
predesposition:integer
primary_key(uid,pid)
foreign_key(uid, user(id))
foreign_key(pid, user(id))

所以,有两个问题: 1. 如何在迁移中声明多个 FK? 2. 如何在迁移中声明两个(或更多)列属于同一个表?

例子:

create_table :encounters, :id => false do |t|
  t.belongs_to :user, :polymorphic => true
  t.belongs_to :user, :polymorphic => true
  t.integer :predisposition
end

【问题讨论】:

  • 你真的在用mongodb和mongoid吗? mongoid/mongodb 不需要这样的迁移。请更正标签或重新提出问题。

标签: ruby-on-rails ruby mongodb mongoid nosql


【解决方案1】:

如果要引用其他表,请遵循外键的概念。并想建议使用完整的表名而不是 uid 和 pid 。

create_table :table_name, {:id => false} do |t|
  t.integer :user_id
  t.integer :pid #suppose its procedures table
  t.integer :predesposition
  t.references :user
  t.references :procedure
  t.timestamps
end
execute "ALTER TABLE table_name ADD PRIMARY KEY (user_id,pid);"

希望有所帮助。

【讨论】:

  • 嗯.. 但是 pid (partner_id) 也必须是属于用户的。这是一个问题,因为不能有“user_id”列..
  • 那么不要添加到迁移中。为该外键运行单独的更改命令,就像主键一样。
猜你喜欢
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2023-03-29
  • 2017-06-07
  • 1970-01-01
  • 2022-08-19
  • 2018-02-09
  • 2012-04-12
相关资源
最近更新 更多