0

次のようなテーブルが必要です。

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

2 つの質問: 1. 移行で複数の FK を宣言するにはどうすればよいですか? 2. 移行時に 2 つ (またはそれ以上) の列が同じテーブルに属していると宣言するにはどうすればよいですか?

例:

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

1 に答える 1

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);"

その助けを願っています。

于 2012-05-09T13:31:07.163 に答える