0

私はrubyでの移行を使用して、モデルと一緒にこれらのテーブルを作成しました。

テーブル情報とテーブル詳細があります。情報テーブルの各エントリは、詳細テーブルに1つの関連付けを持つことができます。

だから私はそれらを作成しました:

create_table :details do |t|
      t.integer :id
      t.string :Bezeichnung
      t.binary :Koordinaten
    end

 create_table :informations do |t|
      t.integer :id
      t.integer :DetailID
      t.integer :Longitude
      t.integer :Latitude
    end

私の情報テーブルで、詳細テーブルのIDを参照する必要があるDetailIDを取得しました。

今私はしました:

ALTER TABLE informations
      ADD CONSTRAINT fk_informations_details
      FOREIGN KEY (DetailID)
      REFERENCES details(id)

これは正しいです?FOREIGN KEYを正しく設定しましたか?または、外部キーを他のテーブルに配置する必要がありますか?

次の情報モデルで使用したいので:

has_one :detail, :foreign_key => 'DetailID'

そして、次の詳細モデルで:

belongs_to :main
4

1 に答える 1

2

いくつかのメモ:

  1. 移行を使用してデータベースであらゆる種類の変更を実行し、決して手動で変更しないでください。
  2. 可能な限り、Ruby on Rails の命名規則を使用してください。これは、detail_id代わりに使用することを意味しますDetailID
  3. あなたの連想は間違っています。

の場合、Ruby on Rails はテーブル内でInformation has_one :detail一致するエンティティを探します。information_iddetails

あなたのモデルでは、それは逆です - にはInformationが含まれていdetail_idます。つまり、Ruby on Rails はこれをInformation belongs_to :detailandとして指定しますDetail has_one :information

于 2012-11-03T14:00:48.670 に答える