[前][次][番号順一覧][スレッド一覧]

rails:1707

From: manakay <manaka.y@g...>
Date: Thu, 12 Oct 2006 00:56:30 +0900
Subject: [rails:1707] Re: リレーションシップの外部参照 id が使えない

> ところで、FKを使うのと、下のように"普通の列"とするのと基本的に同じ、という認識でよいのでし
> ょうか?

Railsでリレーションシップを設定できるのは、ActiveRecordのオブジェクト間のリンク宣言だけです(つまり、has_one,
has_many, habtmなど)。DDLでのFK指定は、Railsにとっては意味はありません。もちろん、データベースが参照先のキーをチェックしてくれるのでDDLでFK指定したほうがいいとは思いますが。
前のメールで私がFKと書いたのは、Railsが認識する参照キー、「モデル名_id」のことであって、データベースの外部キー制約のことではありません。報知さんが読まれた「FKなしでidのみでOK」という記事でいうFKは、このデータベースの外部キー制約のことを指しているのだと思います。つまりDDLでFK指定をしなくとも、オブジェクトレベルでリレーションシップを設定することができて、それは規約に従えば「モデル名_id」でOKだということを言っているのだと思います。
Railsでリレーションシップを設定するのならば、下記のやり方でOKです。というか、下記のやり方が一般的だと思います。


> ーーーーー
>   class User < ActiveRecord::Base
>     # I reference an account.
>     belongs_to :account
>   end
>
>   class Account < ActiveRecord::Base
>     # One user references me.
>     has_one :user
>   end
>
> The tables for these classes could look something like:
>
>   CREATE TABLE users (
>     id int(11) NOT NULL auto_increment,
>     account_id int(11) default NULL,
>     name varchar default NULL,
>     PRIMARY KEY  (id)
>   )
>
>   CREATE TABLE accounts (
>     id int(11) NOT NULL auto_increment,
>     name varchar default NULL,
>     PRIMARY KEY  (id)
>   )

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1705 2006-10-11 17:12 [hoti_jp@y...        ] Re: リレーションシップの外部参照 id が使えない 
->    1707 2006-10-11 17:56 ┗[manaka.y@g...       ]